我正在尝试抓取 Tessco.com 上某些商品的定价信息 我找到了 RoboBrowser 和一些教程。按照教程,我遇到了一个错误,而海报却没有。我不确定需要修改哪些内容来纠正该问题。
代码如下:
import re
import config
from robobrowser import RoboBrowser
br = RoboBrowser(history=True)
br.open("https://www.tessco.com/login")
form = br.get_form()
form['userID'] = config.TESSCO_USERNAME
form['password'] = config.TESSCO_PASSWORD
br.submit_form(form)
查看 Google Chrome 中的检查器,我看到需要用户输入的部分的 ID 为 userID
和 password
。
我假设 RoboBrowser 查找表单并返回 None 的方式存在问题。
我的错误消息是:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-58-6c3d8fcb718d> in <module>
1 form = br.get_form()
----> 2 form['userID'] = config.TESSCO_USERNAME
3 form['password'] = config.TESSCO_PASSWORD
4 br.submit_form(form)
TypeError: 'NoneType' object does not support item assignment
我很不知道出了什么问题。有什么建议可以指引我正确的方向吗?
最佳答案
https://robobrowser.readthedocs.io/en/latest/api.html#robobrowser.browser.RoboBrowser.get_form
来自他们网站的引用:
Returns: BeautifulSoup tag if found, else None
这意味着 RoboBrowser 无法在该网站上找到表单。
找不到表单,因为 https://www.tessco.com/login 中的表单通过javascript加载。
由于 RoboBrowser 不执行 JavaScript,因此表单从未加载,因此 RoboBrowser 无法找到它。
您可能想尝试类似 selenium 的内容,它实际上运行后台浏览器,而不仅仅是加载 HTML
关于Python:RoboBrowser 类型错误: 'NoneType',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56842427/