Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用scrapy获得使用Javascript的第二页结果_Javascript_Jquery_Python_Scrapy - Fatal编程技术网

使用scrapy获得使用Javascript的第二页结果

使用scrapy获得使用Javascript的第二页结果,javascript,jquery,python,scrapy,Javascript,Jquery,Python,Scrapy,我正在尝试抓取,你可以看到,如果你点击第二个页面,页面的URL不会改变,它是通过javascript处理的。我一直在尝试使用inspect元素中的network选项卡,但我完全迷路了。我设法抓取了网站的第一页,下面是代码 from scrapy.spider import BaseSpider from scrapy.selector import HtmlXPathSelector from scrapy_demo.items import ScrapyDemoItem class MyS

我正在尝试抓取,你可以看到,如果你点击第二个页面,页面的URL不会改变,它是通过javascript处理的。我一直在尝试使用inspect元素中的network选项卡,但我完全迷路了。我设法抓取了网站的第一页,下面是代码

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy_demo.items import ScrapyDemoItem


class MySpider(BaseSpider):
  name = "test"
  allowed_domains = ["sueryder.org"]
  start_urls = ["http://www.sueryder.org/Get-involved/Volunteering/All-Roles"]

  def parse(self, response):
      hxs = HtmlXPathSelector(response)
      titles = hxs.select('//tr')
      items = []
      for titles in titles:
          item = ScrapyDemoItem()
          item ["link"] = titles.select('td/text()').extract()
          items.append(item)
      return items

JavaScript只是提交一个表单,所以请使用FormRequest:


您还必须为爬行蜘蛛创建子类,并设置一个规则来爬行结果页面,因为在解析中执行此操作将不起作用。

感谢您的回复,是的,我已经查看了,因此我检查了元素Thank You Blender-我将在今天晚些时候查看此内容。似乎让senseOk为这个noob问题感到抱歉,第一次使用类爬行器。我是否将href放在规则内的restrict\u xpath中的hxs.select中?我还需要一个allow吗?@user2927435:CrawlSpider有一个rules类属性,允许您创建简单的规则来跟踪链接,并将已爬网的页面传递给回调。您希望创建一个规则,该规则遵循给定结果页面中的所有链接,并将已爬网的页面传递给类似parse_result的回调。
from scrapy.http import FormRequest

for href in hxs.select('//div[@class="paging pag-num pag-arrows"]//a/@href'):
    target = href.split("'")[1]

    yield FormRequest.from_response(
        response=response, 
        formnumber=0,
        formdata={'__EVENTTARGET': target}
    )