抓取网页和刮项目之间Scrapy蜘蛛差异(Scrapy spider difference betw

2019-08-22 02:34发布

我写一个Scrapy CrawlSpider读取第一页上的广告列表,需要像列表和广告网址的大拇指一些信息,然后产生一个请求,每个这种广告网址,采取他们的详细资料。

这是工作和分页显然好于测试环境,但今天试图让我意识到,在日志中完整的运行:

抓取3852页(以228页/分钟),刮256项(15个/分钟)

我不理解抓取网页和仿古物品之间的这种大的差异的原因。 任何人都可以帮我实现如该项目迷路?

我的蜘蛛代码:

class MySpider(CrawlSpider):
    name = "myspider"
    allowed_domains = ["myspider.com", "myspider.co"]
    start_urls = [
        "http://www.myspider.com/offers/myCity/typeOfAd/?search=fast",
    ]

    #Pagination
    rules = (
        Rule (
            SgmlLinkExtractor()
           , callback='parse_start_url', follow= True),
    )

    #1st page
    def parse_start_url(self, response):

        hxs = HtmlXPathSelector(response)

        next_page = hxs.select("//a[@class='pagNext']/@href").extract()
        offers = hxs.select("//div[@class='hlist']")

        for offer in offers:
            myItem = myItem()

            myItem['url'] = offer.select('.//span[@class="location"]/a/@href').extract()[0]
            myItem['thumb'] = oferta.select('.//div[@class="itemFoto"]/div/a/img/@src').extract()[0]

            request = Request(myItem['url'], callback = self.second_page)
            request.meta['myItem'] = myItem

            yield request

        if next_page:
            yield Request(next_page[0], callback=self.parse_start_url)


    def second_page(self,response):
        myItem = response.meta['myItem']

        loader = myItemLoader(item=myItem, response=response)

        loader.add_xpath('address', '//span[@itemprop="streetAddress"]/text()') 

        return loader.load_item()

Answer 1:

比方说,你去你的第一个start_urls (其实你只有一个),并在此页上只有一个锚链接( <a> )。 所以,你的蜘蛛抓取的href在这个链接的URL,你在你的回调,得到控制parse_start_url 。 而这个页面里面你有5000点的div与hlist类。 让我们假设这些后续网址向所有5000归还404,没有找到。

在这种情况下,你会:

  • 网页抓取:5001
  • 项目刮:0

让我们再举一个例子:你的起始URL页面上,你有5000个锚,但这些页面的无(如零)具有的类参数的任何的div hlist

在这种情况下,你会:

  • 网页抓取:5001
  • 项目刮:0

你的答案就在调试日志输出。



文章来源: Scrapy spider difference between Crawled pages and Scraped items