【问题标题】:Scrape data from Infinite scrolling using scrapy使用scrapy从无限滚动中抓取数据
【发布时间】:2017-01-06 06:03:18
【问题描述】:

我是 python 和 scrapy 的新手。

我想从网站上抓取数据。

网站使用 AJAX 进行滚动。

获取请求的url如下。

http://www.justdial.com/functions/ajxsearch.php?national_search=0&act=pagination&city=Mumbai&search=Chemical+Dealers&where=&catid=944&psearch=&prid=&page=2&SID=&mntypgrp=0&toknbkt=&bookDate=

请帮助我如何使用 scrapy 或任何其他 python 库

谢谢。

【问题讨论】:

    标签: python-2.7 scrapy


    【解决方案1】:

    似乎这个 AJAX 请求需要一个正确的 Referer 标头,它只是当前页面的 url。您可以在创建请求时简单地设置标头:

    def parse(self, response):
        # e.g. http://www.justdial.com/Mumbai/Dentists/ct-385543
        my_headers = {'Referer': response.url}
        yield Request("ajax_request_url",
                      headers=my_headers,
                      callback=self.parse_ajax)
    
    def parse_ajax(self, response):
        # results should be here
    

    【讨论】:

    • 感谢您的回答。我会尽力让您知道
    • 我已经尝试过代码,也尝试过抓取数据,但只获取前 10 条记录,但我想从所有页面抓取数据。
    • @JT28 你只需要增加page url 参数。即这部分 url &page=2 用于其他页面,直到你没有得到任何结果,这可能意味着你已经过了最后一页。
    • 所以在这种情况下,我的回复网址是http://www.justdial.com/functions/ajxsearch.php?national_search=0&act=pagination&city=Mumbai&search=Chemical+Dealers&where=&catid=944&psearch=&prid=&page=2&SID=&mntypgrp=0&toknbkt=&bookDate= 对吧?...!因为在url= # e.g. http://www.justdial.com/Mumbai/Dentists/ct-385543 我不能直接放或者找到&page选项
    • @JT28 是的,您需要修改 response.url 而不是 Referer 标头。您可以使用 next_url = re.sub('page=\d+','page={}'.format(next_page), response.url) 之类的东西 next_page = int(re.findall('page=(\d+)', response.url)[0]) + 1 或类似的东西,你明白了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    相关资源
    最近更新 更多