首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么壁虎蜘蛛不跟随下一页?

为什么壁虎蜘蛛不跟随下一页?
EN

Stack Overflow用户
提问于 2020-03-21 15:45:28
回答 2查看 254关注 0票数 0

我的代码在下一页不起作用。它只是擦拭第一页,而不是遵循下一页链接。我正在使用anaconda虚拟环境。

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import scrapy
import logging

class Dgoodyman16Spider(scrapy.Spider):
    name = 'dgoodyman16'
    allowed_domains = ['www.medicregister.com']
    start_urls = ['https://www.medicregister.com/USA/list/suppliers.asp']

    def parse(self, response):
        all_lists = response.xpath('//a[@class="TopicHeaderSupplier"]')
        for lists in all_lists:
            title = lists.xpath('.//text()').get()
            links = lists.xpath('.//@href').get()


            yield response.follow(url=links, callback=self.parse_lists, meta={'lists_title': title})

    def parse_lists(self, response):

        title = response.request.meta['lists_title']

        for data in response.xpath('//div[@class="vcard"]'):
            raw_html = data.xpath('.//div[@style="line-height: 1.5;"]').extract()
            tel = data.xpath('.//span[@class="tel"]/text()').get()
            # email = response.xpath('(//div[@class="vcard"]/a)[2]/@href').get()


        yield {
            'Title': title,
            'html': raw_html,
            'Phone': tel
        }

        next_page = response.xpath('((//div[@class="margin-5"])[2]/a)[10]').get()
        if next_page:
            next_page = response.urljoin(next_page)
            yield scrapy.Request(url=next_page, callback=self.parse)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-21 23:32:36

更好的方法是将完整的列表放到start_urls中:

代码语言:javascript
复制
start_urls = ['https://www.medicregister.com/USA/Manufacturers/Suppliers/Page%d/cid.htm' % i for i in range(1,730)]

这比遵循下一页要快得多,这不会异步发生。

票数 -1
EN

Stack Overflow用户

发布于 2020-03-21 19:01:34

您是否考虑过收集导航中的所有URL,删除副本,并跟踪它们?集合中的URL是有效的。

代码语言:javascript
复制
relative_urls = set(
    response.xpath('//div[contains(@class, "margin-5")]/a/@href').getall()
)
absolute_urls = {
    response.urljoin(url) for url in relative_urls
}

我建议您打开一个刮擦的shell,获取start_urls中给出的URL,然后重新检查惟一的xpath。如果它不返回一个相对URL,您就知道刮板为什么停在这里了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60789847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档