簡體   English   中英

Python Scrapy Spider:結果不一致

[英]Python Scrapy Spider: Inconsistent results

我很想知道你們對此的想法。 我已經研究了幾天,但似乎找不到我要去哪里。 任何幫助將不勝感激。

我想系統地爬網此url:使用分頁對其余頁面進行爬網的問題站點

我當前的代碼:

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.selector import Selector
from scrapy.spiders import CrawlSpider, Rule

from acer.items import AcerItem


class AcercrawlerSpider(CrawlSpider):
    name = 'acercrawler'
    allowed_domains = ['studyacer.com']
    start_urls = ['http://www.studyacer.com/latest']

    rules = (
        Rule(LinkExtractor(), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        questions= Selector(response).xpath('//td[@class="word-break"]/a/@href').extract()

        for question in questions:
            item= AcerItem()
            item['title']= question.xpath('//h1/text()').extract()
            item['body']= Selector(response).xpath('//div[@class="row-fluid"][2]//p/text()').extract()
            yield item

當我運行Spider時,它不會引發任何錯誤,而是會輸出不一致的結果。 有時會刮刮文章頁面兩次。 我認為這可能與我使用的選擇器有關,但我無法進一步縮小選擇范圍。 請幫忙嗎?

凱文 今天早些時候,我遇到了一個類似但略有不同的問題,我的爬網程序正在訪問不需要的頁面。 有人回答了我的問題,並建議您按照此處的建議檢查linkextractor: http ://doc.scrapy.org/en/latest/topics/link-extractors.html

class scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), restrict_css=(), tags=('a', 'area'), attrs=('href', ), canonicalize=True, unique=True, process_value=None)

最后,我回顧了我的允許/拒絕組件,以將搜尋器集中於頁面的特定子集。 您可以使用正則表達式指定表達鏈接的相關子字符串,以允許(包括)或拒絕(排除)。 我使用http://www.regexpal.com/測試了這些表達式

我發現這種方法足以防止重復,但是如果您仍然看到它們,我還會發現我當天早些時候正在研究如何防止重復的這篇文章,盡管我不得不說我不必實施此修復程序:

避免重復爬網

https://stackoverflow.com/a/21344753/6582364

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM