をクロールすることは、私のScrapyコードです...Scrapyだけここで1ページ
import scrapy
class NewsSpider(scrapy.Spider):
name = "news"
start_urls = ['http://www.StartURL.com/scrapy/all-news-listing']
allowed_domains = ["www.xxxxx.com"]
def parse(self, response):
for news in response.xpath('head'):
yield {
'pagetype': news.xpath('//meta[@name="pdknpagetype"]/@content').extract(),
'pagetitle': news.xpath('//meta[@name="pdknpagetitle"]/@content').extract(),
'pageurl': news.xpath('//meta[@name="pdknpageurl"]/@content').extract(),
'pagedate': news.xpath('//meta[@name="pdknpagedate"]/@content').extract(),
'pagedescription': news.xpath('//meta[@name="pdknpagedescription"]/@content').extract(),
'bodytext': [' '.join(item.split()) for item in (response.xpath('//div[@class="module__contentp"]/*/node()/text()').extract())],
}
next_page = response.css('p a::attr(href)').extract_first()
if next_page is not None:
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callback=self.parse)
マイstart_urlsページには、次のようになります。それは非常にシンプルなページと私はクロールするすべての3000のリンク/ URLのリスト...
<html>
<head>
<div>
<p><a href="http://www.xxxxx.com/asdas-sdf/kkm">Page 1</a></p>
<p><a href="http://www.xxxxx.com/vdfvd-asda/vdfvf/dfvd">Page 2</a></p>
<p><a href="http://www.xxxxx.com/oiijo/uoiu/xwswd">Page 3</a></p>
<p><a href="http://www.xxxxx.com/jnkjn-yutyy/hjj-sdf/plm">Page 4</a></p>
<p><a href="http://www.xxxxx.com/unhb-oiiuio/hbhb/jhjh/qwer">Page 5</a></p>
<p><a href="http://www.xxxxx.com/eres/popo-hbhh/oko-sdf/ynyt">Page 6</a></p>
<p><a href="http://www.xxxxx.com/yhbb-ytyu/oioi/rtgb/ttyht">Page 7</a></p>
..........
<p><a href="http://www.xxxxx.com/iojoij/uhuh/page3000">Page 3000</a></p>
</div>
</head>
</html>
私はこのページにScrapyを送信すると、それだけで最初のリンクすなわちhttp://www.xxxxx.com/page1と停止をクロール。 エラーは報告されていません。この再帰部分のように、かなり動作していないようです...!では、このコードを変更して3000個のURLのそれぞれに行き、いくつかの特定のフィールドを取得します。
「ルール」とScrapyの「LinkExtractor」オブジェクトを使用した他の同様の問題がありましたか?私は、私の要件が非常に単純なので、どちらかが必要かどうかはわかりません。
ご協力いただきありがとうございます。ありがとう
あなたが例にURLを与えることができますか? next_page urlは恐らくdupeフィルタでフィルタリングされているので、next_page urlの発見におそらく欠陥があります。通常は、next_pageと言うURLを探しているか、ハイパーリンクされていないページのdivに従っています。例を教えることができれば、説明するのが簡単になります。 – Granitosaurus
私は解決策を見つけました.....下記の私の更新コードをご覧ください... – Slyper