URLのリストを取得してクロールするパッケージ "Scrapy"でスパイダーを作成しようとしています。私は答えのためにstackoverflowを検索しましたが、問題を解決する何かを見つけることができませんでした。でPython - Scrapy - URLのリストを取得してクロールするクローラを作成する
- :私は、印刷self.start_urlsながら、印刷された以下の情報を取得
Spider = Try(urls = [r"https://www.example.com"]) process = CrawlerProcess({ 'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)' }) process.crawl(Spider) process.start()
:
class Try(scrapy.Spider): name = "Try" def __init__(self, *args, **kwargs): super(Try, self).__init__(*args, **kwargs) self.start_urls = kwargs.get("urls") print(self.start_urls) def start_requests(self): print(self.start_urls) for url in self.start_urls: yield Request(url , self.parse) def parse(self, response): d = response.xpath("//body").extract()
私はクモをクロールすると、次のよう
私のスクリプトがあります__init__機能が画面に表示されます: [r "https://www.example.com "](スパイダーに渡される)。画面上に印刷されたstart_requests機能で
- がある:なし
は、なぜ私はNoneを取得していないのですか?この問題にアプローチする別の方法はありますか?または私のクモのクラスに間違いがありますか?
ありがとうございました!
リストの先頭にURLを保持するための別の名前を使用する - 'self.start_urls'は' scrapy'によって使用されるので、それらを削除できます。私はあなたが '__init__'の' self.start_urls'にURLを入れたらそれを使うのだろうかと思っています。おそらくそれを使い、 'start_requests'を使う必要はありませんか? – furas
'process_closed'は、' from_crawler'を呼び出すときにパラメータなしで新しいTryオブジェクトを作成します。 Scrapy Source CodeのCrawlerクラスを参照してください。 https://github.com/scrapy/scrapy/blob/master/scrapy/crawler.py#L101-L102 – matiskay