如何使用python在scrapy上刮取具有相同域的2个网页?
嗨,伙计们,我在抓取数据方面是个新手,我已经试过基本的了。但我的问题是,我有两个网页与相同的领域,我需要刮 我的逻辑是, 第一页www.sample.com/view-all.html *此页面打开所有项目列表,我需要获取每个项目的所有href attr 第二页www.sample.com/productpage.52689.html *这是来自第一页的链接,因此52689需要根据第一页提供的链接进行动态更改 我需要在第二页上获得所有数据,如标题、描述等 我所想的是循环,但它在我这方面不起作用。我在谷歌上搜索,但没有人有和我一样的问题。请帮帮我如何使用python在scrapy上刮取具有相同域的2个网页?,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,嗨,伙计们,我在抓取数据方面是个新手,我已经试过基本的了。但我的问题是,我有两个网页与相同的领域,我需要刮 我的逻辑是, 第一页www.sample.com/view-all.html *此页面打开所有项目列表,我需要获取每个项目的所有href attr 第二页www.sample.com/productpage.52689.html *这是来自第一页的链接,因此52689需要根据第一页提供的链接进行动态更改 我需要在第二页上获得所有数据,如标题、描述等 我所想的是循环,但它在我这方面不起作用。
import scrapy
class SalesItemSpider(scrapy.Spider):
name = 'sales_item'
allowed_domains = ['www.sample.com']
start_urls = ['www.sample.com/view-all.html', 'www.sample.com/productpage.00001.html']
def parse(self, response):
for product_item in response.css('li.product-item'):
item = {
'URL': product_item.css('a::attr(href)').extract_first(),
}
yield item`
在解析中,您可以生成带有url和函数名的请求,以便在不同的函数中刮取此url
def parse(self, response):
for product_item in response.css('li.product-item'):
url = product_item.css('a::attr(href)').extract_first()
# it will send `www.sample.com/productpage.52689.html` to `parse_subpage`
yield scrapy.Request(url=url, callback=self.parse_subpage)
def parse_subpage(self, response):
# here you parse from www.sample.com/productpage.52689.html
item = {
'title': ...,
'description': ...
}
yield item
在和中查找请求
还有
response.follow(url, callback=self.parse_subpage)
这将自动将www.sample.com添加到URL中,这样您就不必在
Request(url = "www.sample.com/" + url, callback=self.parse_subpage)
看
如果你对刮削感兴趣,那么你应该从头到尾阅读 Scrapy不一定要生产产品。它可以生成带有url和函数名的请求,该请求将从该url中删除。通过这种方式,parse可以从主页上刮取URL,并使用Request运行其他函数来刮取这些URL。你应该拥有所有的文档--如果你对刮片感兴趣,那么你应该从第一页到最后一页阅读本文档。谢谢@furas,一切正常。我已经阅读了文档并理解了功能。我已经对您提供的代码做了一些修改,现在它工作正常了,谢谢