2016-08-08 19 views
0

私はあなたの人がこれについてどう思うかを知りたいです。私は数日前から研究していて、どこに間違っているのか分からないようです。どんな助力も高く評価されます。Python Scrapy Spider:一貫性のない結果

このURLを体系的にクロールする:Question siteページネーションを使用して残りのページをクロールします。

私の現在のコード:

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 

私はそれがすべてのエラーを投げる代わりに、一貫性のない結果を出力しないクモを走りました。記事のページを2度掻き回すことがあります。私はそれが私が使用したセレクターと関係するかもしれないと思っていますが、私はこれ以上それを絞ることはできません。これで助けてください?

答えて

0

ケビン;私はクロールスパイダーが不必要なページを訪れていた今日、似たような、しかし若干異なる問題を抱えていました。 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) 

私はページの特定のサブセットに上のクローラを集中する私の許可/拒否の部品を見直してしまった:あなたがここに示唆したように誰かがlinkextractorをチェックする提案で私の質問に答えました。 regexを使用して、リンクの関連する部分文字列を表現し、許可(包含)または拒否(除外)することができます。 http://www.regexpal.com/

私はこのアプローチが重複を防ぐのに十分であることを発見しましたが、まだ見ていれば、私はこの記事を発見しました。私は、この修正プログラムを実装する必要はありませんでしたと言っている:

Avoid Duplicate URL Crawling

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

関連する問題