【发布时间】:2017-11-13 07:59:01
【问题描述】:
我正在尝试访问一个站点并检查是否没有链接重定向到该站点内的已关闭页面。由于没有可用的站点地图,我使用Scrapy 来抓取站点并获取每个页面上的所有链接,但我无法让它输出包含找到的所有链接及其状态代码的文件。我用来测试代码的网站是quotes.toscrape.com,我的代码是:
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)
我尝试在 yield 之后添加以下行:
item = MytestItem()
item['url'] = link
item['status'] = response.status
yield item
但它给我带来了一堆重复,没有状态为 404 或 301 的 url。有谁知道我如何获得所有状态为 url 的 URL?
【问题讨论】: