使用scrapy,如何抓取带有onclick属性的复选框的页面
Using scrapy, how to a crawl a page with checkbox that have onclick attribute?
我正在使用Scrapy从网页抓取一些数据。该页面有一个包含多个复选框和下拉菜单的表单,表单需要选中所有这些复选框和下拉菜单才能生成数据表。所有的复选框都有调用javascript代码的onClick属性,它们处于层次结构中,即,有5个主复选框,每个复选框包含7个复选框作为子类别,以此类推。复选框具有4个级别的树形结构。这是最底层(叶)复选框之一:
<input type="checkbox" name="mid" value="1043" id="bd_1" onclick="setGroupCheck(this)">
javascript方法setGroupCheck()是在页面的头部定义的。
我试着像这样提交表单:
FormRequest("url", method='POST', formdata={'mid':'1043','Ins':'a'}, callback=self.parseInfoPage)
但是它给了我错误:500内部服务器错误。
我该如何解决这个问题?
你得到的错误是在服务器上,而不是在你的FormRequest。如果你想使用Scrapy,你可能对此无能为力。如果你需要从Python中与JavaScript进行广泛的交互,那么你可能需要使用另一种抓取方法。
我最喜欢的是Selenium使用PhantomJS作为驱动程序,因为它是无头的。您可以在这些链接中下载并安装下面的说明。然后你可以在Python中使用以下命令启动web驱动程序:
from selenium import webdriver
browser = webdriver.PhantomJS()
browser.get(url)
我知道这个答案可能看起来不令人满意,因为它不能解决您使用Scrapy的问题,但是如果JavaScript变得复杂,那么在不驱动浏览器的情况下从Python与JavaScript进行交互通常是困难的或不可能的。页面上的JavaScript听起来很复杂。如果你添加一个链接到你正在抓取的页面,我可以提供更多的建议,但你的问题的答案真的取决于页面。
相关文章:
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何通过它瞄准javascript元素's的onclick属性
- 作为onclick确认的一部分,Razor中的字符串属性
- SCRIPT5007:属性onclick=;JavaScript:functionName('name'
- 如何在循环中设置onclick属性
- 未捕获的类型错误:无法设置属性'onclick'为null.已尝试window.onload
- 具有多个功能的Onclick属性
- 使用 javascript 禁用 onclick 属性
- jQuery设置属性onclick所有元素,而不是使用内联JS
- 如何解析包含返回函数的属性onclick.javascript
- 如何通过属性“onclick”将jQuery函数.one()应用于元素
- 未捕获的类型错误:不能设置属性'onclick'零
- 类型错误:不能设置属性'onclick'零
- 未捕获的类型错误:不能设置属性'onclick'null的onclick不起作用
- 用Javascript设置选中的属性onClick
- 替换href属性onclick
- 获取包含属性onclick的image,然后隐藏img
- JavaScript 错误 msg : 未捕获的类型错误: 无法设置 null 的属性 'onclick'
- 未捕获类型错误:不能设置属性'onClick'的定义
- 未捕获的类型错误:不能设置属性'onclick'如果为null,则输入type="img&qu