私はサイトにアクセスしようとしていて、サイト内のページにリダイレクトされているリンクがないかどうかチェックしています。利用可能なサイトマップがないので、私はScrapyを使用してサイトをクロールし、各ページのすべてのリンクを取得していますが、見つかったすべてのリンクとそのステータスコードを含むファイルを出力できません。私はコードをテストするために使用しているサイトはquotes.toscrape.comで、私のコードは次のとおりです。Scrapyですべてのhttpリクエストを取得できない
from scrapy.spiders import Spider
from mytest.items import MytestItem
from scrapy.http
import Request
import re
class MySpider(Spider):
name = "sample"
allowed_domains = ["quotes.toscrape.com"]
start_urls = ["http://quotes.toscrape.com"]
def parse(self, response):
links = response.xpath('//a/@href').extract()
\# We stored already crawled links in this list
crawledLinks = []
for link in links:
\# If it is a proper link and is not checked yet, yield it to the Spider
if link not in crawledLinks:
link = "http://quotes.toscrape.com" + link
crawledLinks.append(link)
yield Request(link, self.parse)
私は降伏した後、次の行を追加しようとしました:
item = MytestItem()
item['url'] = link
item['status'] = response.status
yield item
しかし、それは私を取得します重複の束とステータス404または301のURLはありません。どのように私はステータスですべてのURLを取得することができます誰も知っていますか?
ありがとう、私は404エラーを記録することができませんでしたが、私はそれがurlがrobot.txtファイルだったためだと思います。私はどのようにファイルのURLと応答を得ることができるか知っていますか? Scrapyは実行中にすでに私を表示していますが、-o file -t型を使用してもファイルを作成しません。 – SamuelSV
最も簡単な方法は[feed exporters](https://doc.scrapy.org/en/latest/topics/feed-exports.html)です。 (CSV、JSON、...)書式(ファイルベース)と書式を選択するだけです。 'FEED_FORMAT'と' FEED_URI'オプションは 'settings.py'に追加する必要があります。ファイルベースの出力の場合は、 'FEED_FORMAT =" file:///tmp/export.csv "'のように設定します。 – Aufziehvogel