找到
28
篇与
6v6博客
相关的结果
- 第 4 页
-
Python 利用无头浏览器爬虫爬取笔趣阁小说 前言 用户有需求,需要将笔趣阁的小说便捷地保存为文档到本地。笔趣阁有反爬措施,小说内容为 JS 动态生成,Python 的requests库与requests_html已无法满足需求,因此使用类似 selenium 但非 selenium 的无头浏览器爬虫实现小说爬取。 教程步骤 下载安装 Chromium 明确 Chromium 默认安装路径 编写代码 明白爬取参数与注意事项 开始爬取 查看结果 步骤 1. 下载安装 Chromium 下载方式一:官网下载 -> Chromium 下载链接 下载方式二:夸克网盘下载保存 -> Chromium 下载器 下载后,直接双击安装器完成安装。 步骤 2. 明确 Chromium 默认安装路径 安装后,需要明确默认安装的位置,因为代码中会用到。我的电脑用户名为AW,因此被安装在了如下路径:C:\Users\AW\AppData\Local\Chromium\Application\chrome.exe 步骤 3. 编写代码 这段代码中用到的库主要为pyppeteer和python-docx,这两个库需额外下载。 最终代码如下: import asyncio import os from docx import Document from pyppeteer import launch # 禁用自动下载Chromium os.environ["PYPPETEER_SKIP_CHROMIUM_DOWNLOAD"] = "true" async def main(): wordName = "宿命之环1~3章.docx" # Word文件名 netName = "https://www.22biqu.com" # 笔趣阁域名 firstPagePath = "/biqu5251/5259122.html" # 起始页路径 endPagePath = "/biqu5251/5259124.html" # 结束页路径 catchUrl = netName + firstPagePath pageCount = 0 endFlag = False while True: try: doc = Document(wordName) except: doc = Document() browser = await launch(executablePath=r'C:\Users\AW\AppData\Local\Chromium\Application\chrome.exe', headless=True) page = await browser.newPage() await page.goto(catchUrl) element = await page.querySelector('h1.title') if element: text = await page.evaluate('(element) => element.innerText', element) doc.add_heading(text, level=1) else: print('Element not found.') content_element = await page.querySelector('#content') if content_element: paragraphs = await content_element.querySelectorAll('p') for paragraph in paragraphs: text = await page.evaluate('(p) => p.innerText', paragraph) doc.add_paragraph(text) else: print('Content element not found.') element = await page.querySelector('#next_url') next_url = "" if element: next_url = await page.evaluate('(element) => element.getAttribute("href")', element) catchUrl = netName + next_url else: print('Element not found.') await browser.close() doc.save(wordName) if endFlag: break pageCount += 1 print("已完成页码" + str(pageCount)) if next_url == endPagePath: print("匹配到结束链接:" + str(endPagePath)) print("即将结束") endFlag = True asyncio.run(main())步骤 4. 明白爬取参数与注意事项 在使用上述代码时,需要注意以下参数: wordName:爬取后 Word 保存的名称,建议爬什么就取什么名,且加上多少章到多少章。 firstPagePath:起始页路径,比如从《宿命之环》第 3 章开始爬起,则路径为/biqu5251/5259124.html。 endPagePath:结束页路径,建议不要与起始页隔得太远,否则 Word 文件会因字数过多而卡顿。建议分章节爬取。 步骤 5. 开始爬取 设置好参数后,直接运行代码即可。爬取完成后,小说将以 Word 文档形式保存到本地。 步骤 6. 查看结果 打开保存的 Word 文件,章节标题和内容将整齐排列,还可通过章节导航快速定位。 结语 此教程适用于 Python 初学者,后续可优化为 PyQt 程序,提升用户体验。