爬取不同网址相同信息的网址用scrapy

如何用scrapy框架爬取同个源码数据不同网址的网页,例如爬取完四季酒店后再爬取星河丽思卡尔顿酒店
爬取内容是点进去的详细页面

img

img

img

图三的start_urls如何书写

给你个方向,等该页面加载完了再爬,获取到多个酒店,以及对应详情链接,进入详情页面等其加载完了,页面加载完了再爬各个详情内容,这样就能爬取任何你想爬的,同时你需要借助操作浏览器的那个denouncing那个什么模块

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 使用scrapy框架爬取携程旅行数据中的 4.start_requests(self) 中对所产生的url进行逐个获取数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    代码如下(示例):

  • 以下回答来自chatgpt:

    对于这个问题,可以按照以下步骤使用Scrapy来爬取不同网址但相同信息的网页:

    1.创建一个名为hotel的Scrapy项目。

    scrapy startproject hotel
    

    2.在hotel/spiders目录下创建一个名为hotel_spider.py的爬虫文件。

    cd hotel
    scrapy genspider hotel_spider
    

    3.在hotel_spider.py文件中加入如下代码:

    import scrapy
    
    class HotelSpider(scrapy.Spider):
        name = 'hotel'
        allowed_domains = ['hotel1.com', 'hotel2.com', ...] # 改为实际要爬取的网站域名列表
        start_urls = ['https://hotel1.com/xxx', 'https://hotel2.com/xxx', ...] # 改为实际要爬取的起始网址列表
    
        def parse(self, response):
            # 在这里写提取相同信息的代码,例如:
            hotel_name = response.css('h1::text').get()
            hotel_score = response.css('.score::text').get()
            # ...
    
            yield {
                'name': hotel_name,
                'score': hotel_score,
                # ...
            }
    

    其中allowed_domains为允许爬取的域名列表,start_urls为起始网址列表。在parse函数中写提取相同信息的代码,例如示例中的酒店名称和评分,通过yield返回字典形式的结果。

    4.在hotel/settings.py文件中,找到ROBOTSTXT_OBEY并将其设置为False,以允许爬虫访问robots.txt文件。同时,将DOWNLOAD_DELAY设置为2秒,以避免过于频繁的访问网站。

    ROBOTSTXT_OBEY = False
    DOWNLOAD_DELAY = 2
    

    5.运行Scrapy爬虫程序。

    scrapy crawl hotel
    

    以上步骤中,需要注意将示例中的hotel1.com等替换为实际要爬取的网站域名,start_urls同样需要替换为实际要爬取的起始网址列表。同时,在parse函数中需要具体写出提取所需信息的代码。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^