使用selenium 撰写爬虫读取网页内容是很常见的需求,不过你可能会遇到需要先登入帐号才能爬取内容的网页,像是博客来上限制级的书就是这样的例子,你会看到如下的交谈窗:
由于登入帐号后会利用 cookie 记录已登入资讯,为了读取这样的网页,我们可以先手动登入,登入之后汇出 cookie 到档案。之后利用 selenium 爬取网页时,再将汇出的 cookie 重新加入,重新整理网页即可正常读取网页内容了。
汇出 cookie
请先利用 selenium 开启欲读取的网页,这里以博客来为例:
>>> from selenium import webdriver >>> driver = webdriver.Edge() >>> driver.get('https://www.books.com.tw')
这时请依照正常程序登入会员,然后安装 cookie_editor 外挂:
请记得切回博客来的首页,利用外挂以 JSON 格式汇出所有的 cookie:
它会将 cookie 内容复制到剪贴簿上,请自行贴到文字编辑器存档。
重新加入 cookie
接着把 selenium 关闭,再重新开启:
>>> from selenium import webdriver >>> driver = webdriver.Edge() >>> driver.get('https://www.books.com.tw')
要加入 cookie,一定要在跟 Cookie 相同网域的网页,所以要记得先开启博客来网页。接着就可以开启储存 cookie 的档案,载入成为 Pytho 的字典:
>>> import json >>> with open('cookies.json') as f: ... cookies = json.load(f)
再把 cookie 一一加回去:
>>> for cookie in cookies: ... driver.add_cookie(cookie)
这时你应该会看到以下的错误:
Traceback (most recent call last): File "<stdin>", line 3, in <module> File "C:\Users\meebo\code\python\poetry_env\py310\.venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 670, in add_cookie assert cookie_dict["sameSite"] in ["Strict", "Lax", "None"] AssertionError </module></stdin>
这是因为cookie-editor 汇出的资料中,在sameSite 属性中是以null 表示"no_restriction" 表示没有限制一定要是同一个网站,但是selenium 只认得"Strict", "Lax", "None"这三种限制,所以诊断为错误,我们必须手动修改JSON 档,自行把所有sameSite 属性值都改为"None"(注意是字串喔),也请检查把网域不是".books.com.tw " 的cookie 删除:
[ { "domain": ".books.com.tw", "expirationDate": 1767941747.633402, "hostOnly": false, "httpOnly": false, "name": "_ga_TR763QQ559", "path": "/", "sameSite": null, "secure": false, "session": false, "storeId": null, "value": "GS1.1.1733381542.1.1.1733381747.0.0.0" }, ... { "domain": ".books.com.tw", "expirationDate": 1748933733, "hostOnly": false, "httpOnly": false, "name": "__eoi", "path": "/", "sameSite": "no_restriction", "secure": true, "session": false, "storeId": null, "value": "ID=7f42c4647467b5fb:T=1733381733:RT=1733381733:S=AA-AfjbpJCe1kw2klEX0xW55n9CY" }, ... ]
修改完之后,重新载入并加入 cookie 就不会出错了。
重新整理网页让 cookie 生效
加入 cookie 后,你看到的画面仍然是未登入的画面:
必须重新整理网页才能让 cookie 生效:
>>> driver.refresh()
看到的就是登入会员的页面了:
这样就可以利用 selenium 读取需要登入会员的页面了。
最后要提醒的就是 cookie 都有时效,如果一段时间过后无法利用之前储存的 cookie 登入,只要重新依据上述步骤重新取得 cookie 就可以了。
以上是使用 selenium 读取需要登入会员的网页的详细内容。更多信息请关注PHP中文网其他相关文章!

本教程演示如何使用Python处理Zipf定律这一统计概念,并展示Python在处理该定律时读取和排序大型文本文件的效率。 您可能想知道Zipf分布这个术语是什么意思。要理解这个术语,我们首先需要定义Zipf定律。别担心,我会尽量简化说明。 Zipf定律 Zipf定律简单来说就是:在一个大型自然语言语料库中,最频繁出现的词的出现频率大约是第二频繁词的两倍,是第三频繁词的三倍,是第四频繁词的四倍,以此类推。 让我们来看一个例子。如果您查看美国英语的Brown语料库,您会注意到最频繁出现的词是“th

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

处理嘈杂的图像是一个常见的问题,尤其是手机或低分辨率摄像头照片。 本教程使用OpenCV探索Python中的图像过滤技术来解决此问题。 图像过滤:功能强大的工具 图像过滤器

PDF 文件因其跨平台兼容性而广受欢迎,内容和布局在不同操作系统、阅读设备和软件上保持一致。然而,与 Python 处理纯文本文件不同,PDF 文件是二进制文件,结构更复杂,包含字体、颜色和图像等元素。 幸运的是,借助 Python 的外部模块,处理 PDF 文件并非难事。本文将使用 PyPDF2 模块演示如何打开 PDF 文件、打印页面和提取文本。关于 PDF 文件的创建和编辑,请参考我的另一篇教程。 准备工作 核心在于使用外部模块 PyPDF2。首先,使用 pip 安装它: pip 是 P

本教程演示了如何利用Redis缓存以提高Python应用程序的性能,特别是在Django框架内。 我们将介绍REDIS安装,Django配置和性能比较,以突出显示BENE

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

Python是数据科学和处理的最爱,为高性能计算提供了丰富的生态系统。但是,Python中的并行编程提出了独特的挑战。本教程探讨了这些挑战,重点是全球解释

本教程演示了在Python 3中创建自定义管道数据结构,利用类和操作员超载以增强功能。 管道的灵活性在于它能够将一系列函数应用于数据集的能力,GE


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1
好用且免费的代码编辑器

Atom编辑器mac版下载
最流行的的开源编辑器