如何用scrapy框架爬取同个源码数据不同网址的网页,例如爬取完四季酒店后再爬取星河丽思卡尔顿酒店
爬取内容是点进去的详细页面
图三的start_urls如何书写
给你个方向,等该页面加载完了再爬,获取到多个酒店,以及对应详情链接,进入详情页面等其加载完了,页面加载完了再爬各个详情内容,这样就能爬取任何你想爬的,同时你需要借助操作浏览器的那个denouncing那个什么模块
不知道你这个问题是否已经解决, 如果还没有解决的话:代码如下(示例):
对于这个问题,可以按照以下步骤使用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函数中需要具体写出提取所需信息的代码。