我可以使用Scrapy提取XHR数据吗?

时间:2019-12-18 14:18:17

标签: python scrapy

我正在尝试使用Scrapy从此link中提取数据。我希望像前100个页面一样,在页面= 1的这些URL中循环,并提取<a href=\"/@eberhardgross\">\n的每个实例。最终,只是尝试获取用户名,但页面上还有其他<a href="">,但是如果我可以提取出很好的用户名,但是如果我必须得到所有的<a href="">,那么我可以对它们进行排序并得到@。只是想知道我是否可以通过抓取来做到这一点?

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"

def start_requests(self):
    url = "https://www.pexels.com/leaderboard/all-time.js?format=js&seed=&page=%(page_number)s&type="
    page_to_crawl = 100
    for page_number in range(page_to_crawl):
        yield scrapy.Request(url %{'page_number': page_number}, self.parse)

def parse(self, response):
    usernames = response.xpath('//a[contains(@href, "@")]/@href').getall()

1 个答案:

答案 0 :(得分:0)

要抓取多个页面,可以使用start_requests对页面进行迭代:

def start_requests(self):
    url = "https://www.pexels.com/leaderboard/all-time.js?format=js&seed=&page=%(page_number)s&type="
    page_to_crawl = 100
    for page_number in range(page_to_crawl):
        yield scrapy.Request(url %{'page_number': page_number}, self.parse)

在您的parse方法中,您可以通过xpath获取其中包含 @ 的HREF:

def parse(self, response):
    usernames = response.xpath('//a[contains(@href, "@")]/@href').getall()
    yield {
         'usernames': usernames
    }