我正试图让scrapy遵循链接的产品部分的一个网站,我刮。问题是链接不包括在html中的基本网址,我不知道如何让scrapy遵循我的产量方法。
我看到你可以使用一个叫urljoin的东西,但似乎不能让它工作。我还尝试创建一个名为baseurl的变量,并尝试添加baseurl + product,但都没有成功。
我的代码如下所示:
import scrapy
class MySpider(scrapy.Spider):
name = "myscraper"
start_urls = ['https://www.example.ca/product-search?s=true&=964%2C965']
def parse(self, response):
for product in response.css("ol.unitList > li.unit > div.unit-title-wrapper > div.unit-title > a::attr('href')"):
yield scrapy.Request(url=product.get(), callback=self.parseInnerPage)
def parseInnerPage(self, response):
print(response.text)
在添加yield部分之前,我可以打印product部分中的所有URL,结果如下所示:
/product/product-1-url
/product/product-2-url
/product/product-3-url
/product/product-4-url
/product/product-5-url
/product/product-6-url
...
但是当我加上收益率方法时我得到
ValueError: Missing scheme in request url: /product/product-1-url
我认为有一点很重要,example.ca的主页上没有产品页面。我只需要将example.ca添加到结果的开头,这样我就可以跟踪它们。
1条答案
按热度按时间puruo6ea1#
ChatGPT 4已经完成了。解决方案: