gpt4 book ai didi

python - 试图用 scrapy 抓取网页的所有链接。但是我无法在页面上输出链接

转载 作者:太空狗 更新时间:2023-10-30 01:34:48 24 4
gpt4 key购买 nike

我的第一个问题:)

我试图在我的学校网站上抓取所有可能的网页。但是我无法将链接放入文本文件中。我有正确的权限,所以这不是问题。

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from scrapy.spider import BaseSpider

class hsleidenSpider(CrawlSpider):
name = "hsleiden1"
allowed_domains = ["hsleiden.nl"]
start_urls = ["http://hsleiden.nl"]

# allow=() is used to match all links
rules = [
Rule(SgmlLinkExtractor(allow=()), follow=True),
Rule(SgmlLinkExtractor(allow=()), callback='parse_item')
]

def parse_item(self, response):
x = HtmlXPathSelector(response)

filename = "hsleiden-output.txt"
open(filename, 'ab').write(response.url)

所以我只在 hsleiden.nl 页面上扫描。我想将 response.url 放入文本文件 hsleiden-output.txt。

有什么办法可以做到这一点吗?

最佳答案

引用 CrawlSpider 的文档,如果多个规则匹配同一个链接,则只使用第一个。

因此,作为重定向的结果,使用第一条规则会导致看似无限循环。由于第二条规则被忽略,因此没有任何匹配链接传递给 parse_item 回调,这意味着没有输出文件。

需要进行一些调查来解决重定向问题(并修改第一条规则,使其不与第二条规则冲突),但将其完全注释掉将产生如下链接的输出文件:

http://www.hsleiden.nl/activiteitenkalenderhttp://www.hsleiden.nlhttp://www.hsleiden.nl/vind-je-studie/proefstuderenhttp://www.hsleiden.nl/studiumgenerale

等等

它们全部合并在一行中,因此您可能希望在每次写入输出文件时添加换行符或分隔符。

关于python - 试图用 scrapy 抓取网页的所有链接。但是我无法在页面上输出链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13740825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com