scray使用哪种解析方法来解析起始URL

2024-05-14 13:46:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想刮一些开始的网址,然后按照规则在那些网页的链接。我的蜘蛛是从CrawlSpider继承的,并且设置了start_urls和“rules”。但它似乎没有使用我定义的解析函数来解析start_url。代码如下:

<!-- language: lang-python --> 
class ZhihuSpider(CrawlSpider):

    start_urls = ["https://www.zhihu.com/topic/19778317/organize/entire",
        "https://www.zhihu.com/topic/19778287/organize/entire"]

    rules = (Rule(LinkExtractor(allow= (r'topic/\d+/organize/entire')), \
            process_request='request_tagInfoPage', callback = 'parse_tagPage'))

    # this is the parse_tagPage() scrapy should use to scrape
    def parse_tagPage():
        print("start scraping!") # Explicitly print to show that scraping starts
        # do_something

然而,控制台显示,scrapy爬网的起始网址,但没有打印。所以我很确定parse_tagPage()函数没有被调用。尽管如此,scrapy显示url是被爬网的[scrapy] DEBUG: Crawled (200) <GET https://www.zhihu.com/topic/19778317/organize/entire> (referer: http://www.zhihu.com)

关于为什么会发生这种情况以及如何将scray设置为使用parse_tagPage()有什么提示吗?在


Tags: httpscomtopicparsewwwurlsstartrules
1条回答
网友
1楼 · 发布于 2024-05-14 13:46:40

首先,CrawlSpider类使用一个默认的parse()方法来处理所有没有指定回调函数的请求,在我的例子中包括从start_url发出的请求。这个parse()方法只应用规则来提取链接,根本不解析start\u url的页面。这就是为什么我不能从起始网址页面抓取任何东西。在

第二,LinkExtractor不知何故只从起始url页面提取第一个链接。不幸的是,第一个链接是起始网址本身。因此,糟糕的内部复制防止机制阻止了对这些页面的解析。这就是调用回调函数parse_tagPage()的原因。在

我正在修理LinkExtractor。在

相关问题 更多 >

    热门问题