Python+Selenium实战之爬取京东商品数据

本文介绍了使用Python的Selenium库爬取京东商品数据的详细步骤,包括创建浏览器对象、访问URL、设置隐式等待、定位搜索框、模拟搜索操作以及抓取和存储商品数据。
摘要由CSDN通过智能技术生成

代码核心在于这几个部分:

  • 其一:使用元素定位来获取页面上指定需要抓取的关键字;
  • 其二:将页面上定位得到的数据永久存储到本地文件中。

具体来梳理一下从访问URL开始到爬取数据整个流程下来的各个节点我们都做了哪些工作。

我们来看看spider()方法里面具体做了哪些事情:

spider() 方法实现

1、创建浏览器对象

# 创建浏览器对象
drver = webdriver.Chrome()

通过 webdriver.Chrome() 创建浏览器对象后,会自动启动并打开Chrome浏览器。在 Chrome() 方法中未传入任何参数,即使用默认参数 executable_path="chromedriver" ,executable_path表示的是Chrome浏览器驱动的位置,该参数默认浏览器驱动的位置是在Python安装目录下。如果你的浏览器驱动位置与默认位置不同,则 executable_path 参数需要传入驱动的实际位置。

2、访问URL地址

# 浏览器访问地址
drver.get(url)

打开浏览器后driver调用get(url) 方法在地址栏中访问该网址。

3、隐式等待、最大化浏览器窗口

# 隐式等待,确保动态内容节点被完全加载出来——时间感受不到
drver.implicitly_wait(3)
# 最大化浏览器窗口,主要是防止内容被遮挡
drver.maximize_window()

先使用 implicitly_wait() 方法隐式等待浏览器将页面完全加载出来,再使用maximize_window()将浏览器窗口最大化,防止页面元素未加载出来或被遮挡而查找失败。

3、定位搜索框

# 通过id=key定位到搜索框
input_search = drver.find_element_by_id('key')
# 在输入框中输入“口罩”
input_search.send_keys(keyword)
# 模拟键盘回车Enter操作进行搜索
input_search.send_keys(Keys.ENTER)
# 强制等待3秒
sleep(3)

driver 先调用 find_element_by_id('key') 通过ID定位到该搜索框,再调用 sent_keys() 传入参数搜索关键字 keyword ,然后在sent_keys() 中传入 Keys.ENTER 模拟键盘回车键,最后再调用 sleep(3) 强制等待搜索内容加载出来。至此, 定位搜索框->搜索框输入关键字->回车搜索 ,整个搜索流程就完成了。

4、调用 get_good() 方法抓取商品数据

# 抓取商品数据
get_good(drver)

将抓取商品数据的具体操作步骤封装成 get_good() 方法并传入driver参数调用。

5、退出浏览器

# 退出关闭浏览器
drver.quit()

抓取完商品数据后就可以直接将浏览器关闭,释放资源了。这就是整个爬取的过程,而抓取数据的过程再接着继续分析。

get_good() 方法实现

完整代码

# -*- coding: utf-8 -*-
# @Time : 2021/10/26 17:35
# @Author : Jane
# @Software: PyCharm


# 导入库
from time import
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值