需求确定
作为一枚程序猿,一台好的电脑不仅得心应手,敲代码的速度也会快的飞起,所以我们就使用【selenium】在京东上抓取一些笔记本电脑信息吧!
京东的反爬强度很高,因为商品信息都是动态加载的,所以一般的爬虫很难在京东上抓取商品数据。
【selenium】爬虫可以让这些商品信息直接展示在源码中,就可以轻松获取想要的商品数据。
项目分析
了解需求后,下面我们具体分析如何实现它。
👉1、进入首页输入【笔记本电脑】
👉2、点击【搜索】按钮
👉3、跳转到商品列表页,打开【开发者工具】分析页面结构
开发者工具中的页面结构,就是我们用selenium请求到的页面结构,可以直接分析开发者工具中的页面结构进行页面解析。下图就是商品信息所在的标签节点:
可以看到,我们轻松获取到了一页商品的所有信息。
👉4、这是京东的商品列表url
url很长一串,并且参数复杂。不过放心,这里我们不会去分析它的构成来进行多页爬取。
我们现在使用的是【selenium】,可以直接模拟鼠标的点击操作,自动点击翻页进入下一页。
这里有两种方式可以跳转到下一页。
第一种是商品列表右上方的跳转按钮:
第二种是商品列表底部的下一页按钮:
翻页之后再正常解析页面就可以了,接下来我们开始编写代码进行爬取吧!
代码实现
👉1、创建一个chrome浏览器对象
browser = webdriver.Chrome()
👉2、请求京东首页
browser.get(‘https://www.jd.com/’)
👉3、定位到商品搜索框
【selenium】在定位标签时,有多种方式,请认真查阅:
这都是一些基本知识,具体要根据实际情况,选择合适的方式获取标签节点。
这里通过定位【id】为【key】的标签来获取搜索框对象:
input_key = browser.find_element_by_id(“key”)
👉4、在输入框中输入关键字:【笔记本电脑】
搜索框对象有个【send_keys()】方法来进行关键字输入:
input_key.send_keys(‘笔记本电脑’)
👉5、定位【搜索】按钮,获取到【搜索】按钮标签对象
search_box = browser.find_element_by_xpath(’//button[@class=“button”]’)
👉6、点击【搜索】按钮
使用【click()】方法进行模拟鼠标点击操作,这里是程序自动模拟人为去点击【搜索】按钮的操作:
search_box.click()
👉7、等待页面加载
点击搜索按钮后页面会有个加载过程,这里选择使用【time.sleep(3)】等待3秒以便后续操作。
👉8、爬取完毕后使用【close()】方法关闭浏览器
browser.close()
1
from selenium import webdriver
2
import time
3
4
# 创建一个chrome浏览器对象
5
browser = webdriver.Chrome()
6
# 请求京东首页
7
browser.get('https://www.jd.com/')
8
# 获取到input输入框节点对象
9
input_key = browser.find_element_by_id("key")
10
# 在输入框中输入笔记本电脑
11
input_key.send_keys('笔记本电脑')
12
# 获取到搜索按钮节点对象
13
search_box = browser.find_element_by_xpath('//button[@class="button"]')
14
# 点击搜索
15
search_box.click()
16
time.sleep(3)
17
18
# 爬取完毕后关闭浏览器
19
browser.close()
现在我们已经成功输入关键字,并点击搜索按钮,成功搜索进入了商品列表页。
🌟我对代码编写过程做了简单的总结:
👉1、创建一个chrome浏览器对象:webdriver.Chrome()
👉2、请求京东首页:browser.get(‘https://www.jd.com/’)
👉3、定位到商品搜索框:browser.find_element_by_id(“key”)
👉4、在输入框中输入关键字【笔记本电脑】:input_key.send_keys(‘笔记本电脑’)
👉5、定位【搜索】按钮,获取到【搜索】按钮标签对象:browser.find_element_by_xpath(’//button[@class=“button”]’)
👉6、点击【搜索】按钮:search_box.click()
👉7、之后页面会有个加载过程,这里选择使用【time.sleep(3)】等待3秒以便后续操作
👉8、爬取完毕后关闭浏览器 ,使用【close()】方法:browser.close()