爬虫学习案例4

news/2024/12/17 20:15:00/

爬取猪八戒网站数据:2024-12-12

使用xpath解析元素,安装依赖库

pip install lxml

使用selenium步骤我的上篇博客有提到,这里就不重复了
selenium使用博客导航

# 安装pip install lxml,使用xpath
from lxml import etree
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options# 设置Chrome选项
chrome_options = Options()
chrome_options.add_argument("--headless")  # 无头模式,不打开浏览器窗口
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")# 设置ChromeDriver路径
service = Service('D:\\env\\python3\\chromedriver.exe')
keyword = "微信小程序"
url = f"https://www.zbj.com/fw/?k={keyword}"
# 初始化WebDriver
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get(url)
# 等待页面加载
time.sleep(2)  # 等待内容加载html = driver.page_source # 原页面
# 使用xpath提取元素
tree = etree.HTML(html)
divList = tree.xpath("/html/body/div[2]/div/div/div[3]/div[1]/div[4]/div/div[2]/div[1]/div[2]/div")
for divItem in divList:price_elements = divItem.xpath("./div/div[3]/div[1]/span/text()")title_elements = divItem.xpath("./div/div[3]/div[2]/a/span/text()")company_elements = divItem.xpath("./div/div[5]/div/div/div/text()")sales_elements = divItem.xpath("./div/div[3]/div[3]/div[1]/div/span[2]/text()")good_elements = divItem.xpath("./div/div[3]/div[3]/div[2]/div/span[2]/text()")price = price_elements[0].strip("¥") if price_elements else "N/A"title = keyword.join(title_elements) if title_elements else "N/A"company = company_elements[0] if company_elements else "N/A"sales = sales_elements[0] if sales_elements else "N/A"good = good_elements[0] if good_elements else "N/A"print(f"价格: {price}")print(f"标题: {title}")print(f"商铺名: {company}")print(f"销量: {sales}")print(f"好评: {good}")print("下一家***********************")
driver.quit()  # 关闭浏览器

运行效果:
在这里插入图片描述
在这里插入图片描述
猪八戒网每次请求的数据都会随机打乱,所以控制台输出的顺序可能与页面的对应不上。
通过keyword变量可以更换查询内容。可以试试其他关键字。。。


http://www.ppmy.cn/news/1555944.html

相关文章

Redis Java 集成到 Spring Boot

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Redis 📚本系列文章为个人学习笔…

信息化基础知识——电子商务(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 电子商务 大数…

记一次mysql字符集编码问题导致查询时间过长问题

数据表 rm_ic.audit_summary_2024_05_20 该表大概有1200w数据,有个字段为ids 不是唯一的,已建索引 audit_ids_idx create table rm_ic.test1 ( id varchar(19) primary key not null comment id, create_time datetime default CURRENT_TIMESTAMP ); cre…

ReactPress最佳实践—搭建导航网站实战

Github项目地址:https://github.com/fecommunity/easy-blog 欢迎Star。 近期,阮一峰在科技爱好者周刊第 325 期中推荐了一款开源工具——ReactPress,ReactPress一个基于 Next.js 的博客和 CMS 系统,可查看 demo站点。(…

Scala泛型应用场景

Scala中的泛型(Generics)是一种强大的工具,允许开发者编写可重用的代码,同时保持类型安全。泛型在Scala中有多种应用场景,以下是一些常见的应用场景: 集合类: Scala的集合类(如List…

UE4_控件蓝图_制作3D生命血条

一:效果图如下: 二、实现步骤: 1、新建敌人 右键蓝图类 选择角色, 重命名为BP_Enemytest。 双击打开,配置敌人网格体 修改位置及朝向 效果如下: 选择合适的动画蓝图类: 人物就有了动作&#x…

深入了解IPv6——光猫相关设定:DNS来源、DHCPv6服务、前缀来源等

光猫IPv6设置后的效果对比图: 修改前: 修改后: 一、DNS来源 1. 网络连接 来源: 从上游网络(如运营商)获取 IPv6 DNS 信息,通过 PPPoE 或 DHCPv6 下发。 特点: DNS 服务器地址直…

Linux中vim常用命令详解

文章目录 Linux中vim常用命令详解一、引言二、Vim的工作模式1、命令模式1.1、常用命令 2、输入模式3、底线命令模式 三、文本编辑1、移动命令2、编辑操作3、撤销与重做 四、使用示例1、查找与替换2、多文件编辑 五、总结 Linux中vim常用命令详解 一、引言 Vim 是 Linux 系统中…