您现在的位置是:首页 > 编程 > 

Scrapy 爬取旅游景点相关数据( 二 )

2025-07-21 04:35:57
1 安装selenium 借助 selenium 可以使用浏览器来进行爬取数据,可以解决上一节遗留的翻页问题,首先介绍一下如何集成到scrapy环境中。 由于我使用的是macbook,因此以下都是使用macbook安装的过程 ( 网络上很容易到wind
1 安装selenium

借助 selenium 可以使用浏览器来进行爬取数据,可以解决上一节遗留的翻页问题,首先介绍一下如何集成到scrapy环境中。

由于我使用的是macbook,因此以下都是使用macbook安装的过程

( 网络上很容易到windows安装selenium的例子,在此不做赘述 )

首先查看本地安装的chrome浏览器的版本,通过浏览器的设置 》 关于Chrome 可以查看到当前版本,例如目前我使用的版本是 126.0.xxx (arm64版本)

然后前往 https:///binary.html?path=chrome-for-testing/ 下载对应版本驱动,如果使用过低版本,可能出现无法调用问题。

下载好对应版本、对应架构的驱动后,执行操作:

# 先解压缩,然后移动到 /usr/local/bin
mv chromedriver /usr/local/bin

# 添加信任,让macos可以运行 
xattr -d com.apple.quarantine /usr/local/bin/chromedriver

# 原先的程序中添加selenium
pip install selenium
2 编写爬虫

在上一节的程序的基础上,添加一个spider名字叫 qiongyou_s.py

import scrapy

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditi as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
import time

class QiongyouSpider(scrapy.Spider):
    name = 	qys	
    allowed_domains = [	qyer	]
    start_urls = [	https://place.qyer/tokyo/sight/	]

    def __init__(self, *args, **kwargs):
        super(QiongyouSpider, self).__init__(*args, **kwargs)
        opti = webdriver.ChromeOpti()
        # opti.binary_location = r/Users/teslatk/Documents/drivers/chromedriver
        opti.add_argument(	--headless	)
        self.driver = webdriver.Chrome(opti=opti)  # 替换为 ChromeDriver 的实际路径

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, respe):
        # 定义对网站的操作(保存HTML)
        self.driver.get(respe.url)
        # 等待页面加载
        WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located((By.XPATH, 	//ul[@id=poiLists]	))
        )

        page_number = 1
        while True:
            # 保存当前页面 HTML
            page_source = self.driver.page_source
            filename = f	page_{page_number}.html	
            with open(filename, 	w	, encoding=	utf-8	) as f:
                f.write(page_source)
            self.log(f	Saved {filename}	)

            # 解析当前页面内容(如果需要解析,可以在这里添加解析逻辑)

            # 查并点击 下一页 按钮
            try:
                # next_button = self.driver.find_element(By.XPATH, 	//a[@title=下一页]	)
                # next_()

                next_button = self.driver.find_element(By.XPATH, 	//a[@title=下一页]	)
                self.driver.execute_script(arguments[0].click();, next_button)

                page_number = 1
                time.sleep(2)  # 等待页面加载
                WebDriverWait(self.driver, 10).until(
                    EC.presence_of_element_located((By.XPATH, 	//ul[@id=poiLists]	))
                )
            except Exception as e:
                self.log(fo more pages or failed to load next page: {e})
                break

        self.driver.quit()

执行爬虫,获得效果
scrapy crawl qys

4 小结

4.1 翻页问题

值得注意的是,原先程序在执行到第4页的时候提示无法爬取更多页面,因为下一页的按钮在某一个像素点无法点击了,原因可能是页面上的浮窗或者其他内容遮挡住了这个标签,可以修改为使用javascript的方式点击下一页按钮。

 # javascript 点击按钮
 next_button = self.driver.find_element(By.XPATH, 	//a[@title=下一页]	)
 self.driver.execute_script(arguments[0].click();, next_button)

已经可以轻松爬取40多页的景点信息了,下一节我们去解析景点的具体内容!

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1115473.html

相关标签:无
上传时间: 2025-07-17 09:22:57
留言与评论(共有 12 条评论)
本站网友 正确的提肛运动图解
3分钟前 发表
*args
本站网友 雾霾经济
17分钟前 发表
下载好对应版本
本站网友 远洋风景户型图
17分钟前 发表
*args
本站网友 修行太虚
4分钟前 发表
对应架构的驱动后,执行操作
本站网友 自制太阳能热水器
24分钟前 发表
1 安装selenium 借助 selenium 可以使用浏览器来进行爬取数据,可以解决上一节遗留的翻页问题,首先介绍一下如何集成到scrapy环境中
本站网友 北京婚纱摄影前十名
8分钟前 发表
//place.qyer/tokyo/sight/ ] def __init__(self
本站网友 花都花果山公园
0秒前 发表
//a[@title=下一页] ) self.driver.execute_script(arguments[0].click();
本站网友 安卓手机运行慢
19分钟前 发表
f.write(page_source) self.log(f Saved {filename} ) # 解析当前页面内容(如果需要解析,可以在这里添加解析逻辑) # 查并点击 下一页 按钮 try
本站网友 陈湘宇
16分钟前 发表
对应架构的驱动后,执行操作
本站网友 无锡男科医院
5分钟前 发表
//a[@title=下一页] ) self.driver.execute_script(arguments[0].click();
本站网友 宫颈炎预防
18分钟前 发表
encoding= utf-8 ) as f