在 scrapy 中将基本 url 与结果 href 结合起来

2024-05-09

下面是我的蜘蛛代码,

class Blurb2Spider(BaseSpider):
   name = "blurb2"
   allowed_domains = ["www.domain.com"]

   def start_requests(self):
            yield self.make_requests_from_url("http://www.domain.com/bookstore/new")


   def parse(self, response):
       hxs = HtmlXPathSelector(response)
       urls = hxs.select('//div[@class="bookListingBookTitle"]/a/@href').extract()
       for i in urls:
           yield Request(urlparse.urljoin('www.domain.com/', i[1:]),callback=self.parse_url)


   def parse_url(self, response):
       hxs = HtmlXPathSelector(response)
       print response,'------->'

在这里,我尝试将 href 链接与基本链接结合起来,但出现以下错误,

exceptions.ValueError: Missing scheme in request url: www.domain.com//bookstore/detail/3271993?alt=Something+I+Had+To+Do

任何人都可以让我知道为什么我收到此错误以及如何使用 href 链接加入基本网址并产生请求


如果您不想使用替代解决方案urlparse:

response.urljoin(i[1:])

该解决方案更进一步:这里 Scrapy 计算出用于加入的域基础。正如您所看到的,您不必提供明显的http://www.example.com加入。

这使得你的代码reusable将来如果您想更改正在抓取的域。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 scrapy 中将基本 url 与结果 href 结合起来 的相关文章

随机推荐