使用scrapy,如何使用具有onclick属性的复选框对页面进行爬网? - javascript

我正在使用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听起来很复杂。如果您在要抓取的页面上添加链接,我可以提供更多建议,但问题的答案实际上取决于页面。

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

JavaScript中的字符串评估函数 - javascript

            JavaScript中是否有任何内置函数,例如Python中的eval内置函数?注意:eval函数将方程式作为字符串并返回结果。例如,假设变量x为2,则eval("2x+5")返回9。 参考方案 是的,JavaScript中也有eval函数。此外,该声明应有效用于评估,即eval("2*x+5"…

如何在JQuery中操作JSONArray - javascript

我有一个php函数,它以JSON返回此代码{"0":{"title":"Dans l\u2019appartement"},"1":{"title":"A l\u2019a\u00e9roport - D\u00e9part de B\u00e9at…

和字符中断通过PHP接收JSON - javascript

我有一个包含更多对象的数组。如果一个对象包含&字符,则php不会接收&之后的每个对象。可能是什么问题?这就是阿贾克斯xmlhttp.open("POST", "get.php"); xmlhttp.setRequestHeader("Content-Type", "application/…

如何从客户端将数据插入数据库? - javascript

我是Web开发的初学者,可以访问cpanel上托管的网站,并且需要对其进行一些更改。这个网站的后端是由蛋糕PHP制作的,我想使用ajax从客户端将一些数据插入其数据库。问题是我不知道如何获取负责插入数据库的PHP文件的URL。参见下面的代码:var xhttp = newXMLHttpRequest(); xhttp.onreadystatechange= …