如何使用python在scrapy上刮取具有相同域的2个网页?

如何使用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需要根据第一页提供的链接进行动态更改 我需要在第二页上获得所有数据,如标题、描述等 我所想的是循环,但它在我这方面不起作用。

嗨,伙计们,我在抓取数据方面是个新手,我已经试过基本的了。但我的问题是,我有两个网页与相同的领域,我需要刮

我的逻辑是, 第一页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,一切正常。我已经阅读了文档并理解了功能。我已经对您提供的代码做了一些修改,现在它工作正常了,谢谢