V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
mrbendan8023
V2EX  ›  Python

学科网预览文档打印求助

  •  1
     
  •   mrbendan8023 · 2023-11-26 09:48:55 +08:00 · 1092 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位老哥早上好,家里孩子上初中了经常需要各种试卷,我负责给他找试卷,主要用到的几个网站:学科网、组卷网和菁优网,之前有个 python 脚本可以把学科网的预览页面进行解析生成 html 文档,然后借助浏览器打印成 pdf 。但是最近学科网的文档预览机制(或者代码)好像做了修改,现在能够获取到的内容只有一部分,之前是可以全部预览的。那位老哥路过有时间帮忙看看或者分析下。 之前使用的代码如下:

    import requests
    from re import findall, sub
    from hashlib import md5
    
    HTML_FORMAT ='''
    <html>
    
    <head>
    <title>{title}</title>
    </head>
    
    <body>
    {body}
    </body>
    
    </html>
    '''
    
    def writefile(filename,text):
        filename = sub(r"""[\*\/\\\|\<\>\? \:\.\'\"\!]""", "", filename)
        unique = md5(text.encode())
        filename += "_"+unique.hexdigest()[:5]
        filename+=".html"
        print("Writing "+filename)
        # print("-=-=-=-=\n",text,"\n-=-=-=-=")
        with open(filename+'.html', 'w', encoding="utf-8") as f:
            f.write(text)
    
    def main():
        softID=input("ID: ")
        url = "https://www.zxxk.com/soft/Preview/FirstLoadPreviewJson?softID={}&type=3&product=1&v=2&FullPreview=true"
        response = requests.get(url.format(softID))
        if response.status_code!=200:
            print("ERROR")
            print(response.status_code)
            return -1
        ret=response.json()["data"]
        if not ret["IsSuccess"]:
            print("ERROR: IsSuccess option is not true")
            print(ret)
        if not ret['IsRar']:
            print("Not rar")
            print("TotalPage=%d" % ret['TotalPage'])
            print("SoftExt=%s" % ret['SoftExt'])
            try:
                html=ret["Html"]
                print(ret)
            except:
                print(ret)
                exit(1)
            # replace "data-original" to "src" for showing in browser
            html=html.replace("data-original", "src")
            writefile(f"{softID}",html)
        else:
            print("is RAR")
            rar=ret['rarPreviewInfo']
            for file in rar:
                html=file["Html"]
                title=file["SoftName"]
                # replace "data-original" to "src" for showing in browser
                # html=html.replace("data-original", "src")
                urls=findall("(?<=data-original=\") https://preview.zxxk.com/\\S+(?=\")",html)
                l=[]
                for url in urls:
                    if "jpg" in url:
                        l.append(f"<img src={url} />")
                        continue
                    page=requests.get(url,cookies=response.cookies)
                    if not page.status_code==200:
                        print(page)
                        print(page.status_code)
                        print(page.text)
                    assert page.status_code==200
                    l.append(page.text)
                format_html=HTML_FORMAT.format(title=title,body="\n".join(l))
                writefile(title,format_html)
    
    if __name__  == "__main__":
        while True:
            main()
            
    

    然后试卷的地址:https://www.zxxk.com/soft/40662248.html

    ricklei2777
        1
    ricklei2777  
       364 天前   ❤️ 1
    着急的话看看这个 http://www.toolsba.top/
    ricklei2777
        2
    ricklei2777  
       364 天前
    @ricklei2777 但是这个预览机制貌似百度文库也是一样,感觉可以参考百度文库的下载方式?亦或者是高校图书馆权限,不过我所在高校没有权限,上某宝问问可能有效。
    mrbendan8023
        3
    mrbendan8023  
    OP
       364 天前
    @ricklei2777 #1 看到啦,感谢老哥的回复,我去试试。
    zuoheming
        4
    zuoheming  
       364 天前
    初中物理(人教版的话)还没开始上力学吧,初二目前上到凸透镜成像、初三上到电功率、化学上到碳这个单元
    mrbendan8023
        5
    mrbendan8023  
    OP
       364 天前
    @zuoheming 对的啊,现在正在学习欧姆定律和电功率部分,试卷是随便找的。。。
    zorchp1
        6
    zorchp1  
       361 天前
    可以试试百度文库高校版,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6058 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 02:31 · PVG 10:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.