通过使用Selenium和Scrapy的onclick来废弃显示的数据

2024-04-18 22:24:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了一个脚本,使用Scrapy从使用身份验证的网站上删除数据。 我正在抓取的页面确实很痛苦,因为它主要是由javascript和AJAX请求生成的。页面的所有正文都放在一个<form>内,该页面允许使用submit按钮更改页面。URL不变(它是一个.aspx)。在

我已经成功地从第一页删除了所有需要的数据,然后使用以下代码单击此输入按钮更改页面:

            yield FormRequest.from_response(response,
            formname="Form",
            clickdata={"class":"PageNext"},
            callback=self.after_login)

after_login方法正在抓取数据。 但是,我需要在单击具有onclick属性的容器后出现在另一个div中的数据。我需要做一个循环,以便点击每个容器,显示数据,并抓取它们,然后我将转到下一页并执行相同的过程。在

问题是我找不到如何让“脚本”使用Selenium单击容器(登录时,如果没有,我就不能转到这个页面),然后Scrapy在XHR请求发出后抓取数据。在

我在网上做了很多研究,但没有尝试任何解决办法。在

谢谢!在


Tags: 数据form脚本身份验证网站responseloginajax
1条回答
网友
1楼 · 发布于 2024-04-18 22:24:14

好吧,所以我几乎得到了我想要的,遵循@malberts的建议。 我使用这种代码来获取Ajax响应请求:

yield scrapy.FormRequest.from_response(
            response=response,
            formdata={
                    'param1':param1value,
                    'param2':param2value,
                    '__VIEWSTATE':__VIEWSTATE,
                    '__ASYNCPOST':'true',
                   'DetailsId':'123'},
            callback=self.parse_item)

def parse_item(self, response):
    ajax_response = response.body
    yield{'Response':ajax_response}

假设响应是HTML格式的。问题是,当我通过Chrome开发工具查找响应请求时,响应并不完全相同。我还没有考虑到所有的表单数据(~10/25),会不会需要所有表单数据,即使它们不会根据id更改?在

谢谢!在

相关问题 更多 >