1
こんにちは私はこのscrapyコードを(私は多くのifループを削除し、それを簡単に理解できるように)簡略化しました。 問題はこの治療法ですはウェブサイトの最初のページのみをスキャンします。私は、hte scrapy.requestが新しいURLを取得しないことを理解しました。またアイテム['url']には、常にベースURLだけが追加されてダウンロードされます。Scrapy.requestは新しいURLを取得しません
import scrapy
from collections import Counter
from scrapy.selector import Selector
from Mycode.items import *
class ExampleSpider(scrapy.Spider):
name = "full_sites"
def __init__(self, site=None, *args, **kwargs):
super(ExampleSpider, self).__init__(*args, **kwargs)
self.start_urls = [site]
self.base_url = site
self._site = site
self.allowed_domains = [self._site]
def parse(self, response):
for i in response.xpath('//a/@href').extract():
print '================'
print 'i entered=', i
url = self.base_url + i
print url, 'go to scrapy'
yield scrapy.Request(url= url, callback=self.parse)
item = FullSitesItem()
item['url'] = response.url
print 'item=', item['url']
yield item
私は私のモニターにこれらの出力を得る:
================
i entered= /service
http://webscraper.io/service go to scrapy
item= http://webscraper.io
================
i entered= /sitemap-specialist
http://webscraper.io/sitemap-specialist go to scrapy
item= http://webscraper.io
================
i entered= /screenshots
http://webscraper.io/screenshots go to scrapy
item= http://webscraper.io
================
そうにかかわらずscrapy.Requestsに渡されるURLの、項目[ 'URL']は同じです!この問題を解決するにはどうすればよいですか?あなたはresponse.url
そうi
をループさ
おかげ
返信いただきありがとうございます。 「新しい方法」とはどういう意味ですか?あなたは別の機能を意味しますか? – nakisa
はい、別の解析関数/メソッドを作成します。 –
助けてくれてありがとう。 – nakisa