Scrapy referer无

时间:2017-02-28 21:33:05

标签: python scrapy

你好我试图用scrapy刮掉加拿大黄页这是我的蜘蛛代码:

import scrapy


class YellSpider(scrapy.Spider):
    name = 'yellspider'

    start_urls = ['http://www.yellowpages.ca/search/si/40/dentist/Toronto+ON']

    def start_requests(self):

        urls = ['http://www.yellowpages.ca/search/si/{0}/dentist/Toronto+ON'.format(x) for x in xrange(1, 51)]
        for u in urls:
            yield scrapy.Request(url=u, callback=self.parse, dont_filter=True)

    def parse(self, response):
        for job in response.css(".listing.listing--bottomcta.placement"):
            yield {
                'name': job.css(".listing__name--link::text").extract_first(),
                'street': job.css(".jsMapBubbleAddress:nth-child(1)::text").extract_first(),
                'locality': job.css(".jsMapBubbleAddress:nth-child(2)::text").extract_first(),
                'postalCode': job.css(".jsMapBubbleAddress:nth-child(4)::text").extract_first(),
                'website': job.css(".mlr__item.mlr__item--website a::attr(href)").re(r'\?(.*)'),
                'phone': job.css(".mlr__submenu__item h4::text").extract_first(default='no phone number')
            }

例如,我知道搜索结果只有50页,所以我确实使用列表理解创建了一个网址列表。 比我使用css选择器来查找我想要抓取的内容。

现在让我们深入研究问题

一切正常,直到我到达页面[28到50]这就是输出的样子

click here to see the output image

PS :我确实更改了 USER_AGENT 我还添加了 DOWNLOAD_DELAY = 3 并尝试添加 referer 到标题但没有任何效果

还有一点需要注意的是,在scrapy shell中,选择器适用于其余页面[28到50]

2 个答案:

答案 0 :(得分:1)

查看第28页或第29页。我对我所做的项目有类似的问题。当我查看那些不起作用的页面时,我注意到这些页面的页面布局不同,我使用的xpath在这些页面上不存在。也许第28-50页的CSS与第1-27页的不同。

答案 1 :(得分:0)

首先你应该导入库:

import re

然后,对于href的链接,您没有提取.extract(),而是添加了re。 要进行调试 - 首先尝试使用href函数完成extract()以使其正常工作 - 而不是在导出的链接上轻松执行regex