gpt4 book ai didi

python - 递归抓取后没有抓取到数据

转载 作者:行者123 更新时间:2023-12-01 04:25:32 26 4
gpt4 key购买 nike

我正在尝试从 https://iowacity.craigslist.org/search/jjj 递归地抓取职位名称。 。也就是说,我希望蜘蛛抓取第 1 页上的所有职位名称,然后按照底部的链接“next>”抓取下一页,依此类推。我模仿 Michael Herman 的教程来编写我的蜘蛛。 http://mherman.org/blog/2012/11/08/recursively-scraping-web-pages-with-scrapy/#.ViJ6rPmrTIU

这是我的代码:

import scrapy
from craig_rec.items import CraigRecItem
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor


class CraigslistSpider(CrawlSpider):
name = "craig_rec"
allowed_domains = ["https://craigslist.org"]
start_urls = ["https://iowacity.craigslist.org/search/jjj"]

rules = (
Rule(SgmlLinkExtractor(allow=(), restrict_xpaths=('//a[@class="button next"]',)), callback="parse_items", follow= True),
)

def parse_items(self, response):
items = []
for sel in response.xpath("//span[@class = 'pl']"):
item = CraigRecItem()
item['title'] = sel.xpath("a/text()").extract()
items.append(item)
return items

我释放了蜘蛛,但没有抓取任何数据。有什么帮助吗?谢谢!

最佳答案

当您将 allowed_domains 设置为“https://craigslist.org ”时,由于对子域“iowacity.craigslist.org”的异地请求,它会停止抓取。

您必须将其设置为:

allowed_domains = ["craigslist.org"]

根据docs allowed_domains 是包含允许此蜘蛛抓取的域的字符串列表。它期望其格式为 domain.com,这样蜘蛛程序就可以解析域本身和所有子域。

您还可以仅允许少数子域或通过将属性留空来允许所有请求。

关于python - 递归抓取后没有抓取到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33206117/

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