如何使用scrapy中的爬行器单击带有javascript onclick的链接?

如何使用scrapy中的爬行器单击带有javascript onclick的链接?,javascript,python,onclick,scrapy,web-scraping,Javascript,Python,Onclick,Scrapy,Web Scraping,我希望scrapy能够抓取下一个链接如下所示的页面: <a href="#" onclick="return gotoPage('2');"> Next </a> encoded_session_hidden_map=H4sIAAAAAAAAALWZXWwj1RXHJ9n 我试图在CrawlSpider类上构建我的爬行器,但我真的不知道如何对其进行编码,使用BaseSpider我使用parse()方法处理第一个URL,它恰好是一个登录表单,我在其中发布了以下内容: d

我希望scrapy能够抓取下一个链接如下所示的页面:

<a href="#" onclick="return gotoPage('2');"> Next </a>
encoded_session_hidden_map=H4sIAAAAAAAAALWZXWwj1RXHJ9n
我试图在
CrawlSpider
类上构建我的爬行器,但我真的不知道如何对其进行编码,使用
BaseSpider
我使用
parse()
方法处理第一个URL,它恰好是一个登录表单,我在其中发布了以下内容:

def logon(self, response):
    login_form_data={ 'email': 'user@example.com', 'password': 'mypass22', 'action': 'sign-in' }
    return [FormRequest.from_response(response, formnumber=0, formdata=login_form_data, callback=self.submit_next)]
然后我定义了submit_next()来告诉下一步要做什么。我不知道如何告诉爬行蜘蛛在第一个URL上使用哪种方法


我爬网中的所有请求,除了第一个,都是POST请求。它们交替使用两种类型的请求:粘贴一些数据,然后单击“下一步”转到下一页。

实际方法如下:

  • 发布您的请求以访问页面(如您所做)
  • 从该特定响应中提取到下一页的链接
  • 如果可能,简单请求下一页,或者在适用的情况下再次使用FormRequest
  • 所有这些都必须通过服务器响应机制进行优化,例如:

    • 您可以尝试在
      FormRequest.from\u response
      中使用
      dont\u click=true
    • 或者您可能希望处理来自服务器的重定向(302)(在这种情况下,您必须在meta中提到,您需要将句柄重定向请求也发送到回调。)
    现在如何解决这一切:
    使用像fiddler这样的web调试器,或者您可以使用Firefox插件FireBug,或者只需在IE 9中点击F12;并检查用户在网站上实际发出的请求是否与您抓取网页的方式相匹配。

    我构建了一个快速抓取程序,通过selenium执行JS。请随意复制/修改

    再给我一些上下文,scrapy无法解释javascript,但如果您可以将javascript发送的POST消息(编码的会话隐藏的映射)作为一些隐藏的表单字段或其他内容,您可以模拟该消息。