사이트에 액세스하려고 시도하고 사이트 내의 페이지로 리디렉션되는 링크가 없는지 확인합니다. 사이트 맵을 사용할 수 없기 때문에 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
그러나 그것은 나를 얻는다 중복 및 URL 404 또는 301 상태의 무리. 누구든지 상태와 함께 모든 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