DrissionPage拽神知网PDF论文下载辅助

本文介绍了如何使用Drission的ChromiumPage和ChromiumOptions进行网页自动化操作,包括设置本地端口、填写搜索参数并抓取数据,同时处理滑动验证和PDF下载。
from DrissionPage import ChromiumPage, ChromiumOptions
co = ChromiumOptions().set_local_port(9222)
page = ChromiumPage(addr_or_opts=co)
from DrissionPage.common import Settings
Settings.singleton_tab_obj = True

def log():
    zhuti1 = '经营者'
    zhuti2 = '民宿经营者'
    page.get('https://kns.cnki.net/kns/advsearch?dbcode=CJZK')
    page.set.window.max()
    page.ele('#txt_1_value1').input(zhuti1)
    page.ele('x:/html/body/div[2]/div[3]/div[3]/div[2]/div[1]/div[2]/span[2]/select[2]').click(by_js=True)
    page.ele('text=或含').click(by_js=True)
    page.ele('#txt_1_value2').input(zhuti2)
    page.ele('#startYear').click(by_js=True)
    page.ele('x://*[@id="startYear"]/option[5]').click(by_js=True)
    page.ele('#endYear').click(by_js=True)
    page.ele('x://*[@id="endYear"]/option[3]').click(by_js=True)
    page.ele('#SCI').click(by_js=True)
    page.ele('#CSSCI').click(by_js=True)
    page.ele('.search').click(by_js=True)
    page.wait.load_start()  # 等待页面进入加载状态
    page.ele('tx=经营者').
### 获取 PDF 阅读页中的 PDF 二进制数据 在 DrissionPage 中,可以通过监听浏览器的下载行为来获取 PDF 文件的二进制数据。当页中嵌入了 PDF 查看器(如基于浏览器内置 PDF 阅读器或第三方库如 PDF.js)时,PDF 文件通常通过 HTTP 请求加载。通过设置下载路径并监听下载事件,可以捕获该文件并读取其二进制内容[^1]。 以下是一个实现方案: ```python from DrissionPage import ChromiumPage, ChromiumOptions import os def on_download_start(download_id, download_url): print(f"开始下载: {download_url}") def on_download_finish(download_id, download_path): print(f"下载完成,文件路径: {download_path}") with open(download_path, 'rb') as f: binary_data = f.read() print(f"文件大小: {len(binary_data)} 字节") # 可在此处对 binary_data 进行处理,如上传、解析等 # 配置 ChromiumOptions co = ChromiumOptions() co.set_argument('--disable-gpu', True) co.set_argument('--no-sandbox', True) # 创建 ChromiumPage 实例 page = ChromiumPage(chromium_options=co) # 设置下载路径为临时目录 temp_dir = os.path.join(os.getcwd(), 'temp_downloads') os.makedirs(temp_dir, exist_ok=True) page.set.download_path(temp_dir) # 设置下载监听回调 page.set.on.download_start(on_download_start) page.set.on.download_finish(on_download_finish) # 打开包含 PDF页 page.get('https://example.com/viewer.html?file=document.pdf') # 触发 PDF 加载行为(如点击下载按钮) page.ele('xpath://button[@id="downloadPDF"]').click() ``` 上述代码通过设置下载监听器,在 PDF 文件下载完成后读取其内容为二进制流。此方法适用于 PDF 文件通过标准 HTTP 下载机制加载的场景。对于使用 PDF.js 或其他 JavaScript 渲染的 PDF 内容,如果未触发实际文件下载行为,则需结合页面资源监听或 WebSocket 抓取数据流进行进一步处理[^1]。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值