需求确定

作为一枚程序猿,一台好的电脑不仅得心应手,敲代码的速度也会快的飞起,所以我们就使用【selenium】在京东上抓取一些笔记本电脑信息吧!

京东的反爬强度很高,因为商品信息都是动态加载的,所以一般的爬虫很难在京东上抓取商品数据。

【selenium】爬虫可以让这些商品信息直接展示在源码中,就可以轻松获取想要的商品数据。

项目分析

了解需求后,下面我们具体分析如何实现它。

👉1、进入首页输入【笔记本电脑】

Python翻页爬取快手 python爬虫 如何翻页_搜索


👉2、点击【搜索】按钮

Python翻页爬取快手 python爬虫 如何翻页_Python翻页爬取快手_02


👉3、跳转到商品列表页,打开【开发者工具】分析页面结构

Python翻页爬取快手 python爬虫 如何翻页_搜索_03


开发者工具中的页面结构,就是我们用selenium请求到的页面结构,可以直接分析开发者工具中的页面结构进行页面解析。下图就是商品信息所在的标签节点:

Python翻页爬取快手 python爬虫 如何翻页_Python翻页爬取快手_04

可以看到,我们轻松获取到了一页商品的所有信息。

👉4、这是京东的商品列表url

https://search.jd.com/Search?keyword=%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91&page=3&s=60&click=0

url很长一串,并且参数复杂。不过放心,这里我们不会去分析它的构成来进行多页爬取。

我们现在使用的是【selenium】,可以直接模拟鼠标的点击操作,自动点击翻页进入下一页。

这里有两种方式可以跳转到下一页。

第一种是商品列表右上方的跳转按钮:

Python翻页爬取快手 python爬虫 如何翻页_python_05


第二种是商品列表底部的下一页按钮:

Python翻页爬取快手 python爬虫 如何翻页_输入框_06


翻页之后再正常解析页面就可以了,接下来我们开始编写代码进行爬取吧!

代码实现

👉1、创建一个chrome浏览器对象

browser = webdriver.Chrome()

👉2、请求京东首页

browser.get(‘https://www.jd.com/’)

👉3、定位到商品搜索框

Python翻页爬取快手 python爬虫 如何翻页_python_07


【selenium】在定位标签时,有多种方式,请认真查阅:

Python翻页爬取快手 python爬虫 如何翻页_搜索_08

这都是一些基本知识,具体要根据实际情况,选择合适的方式获取标签节点。

这里通过定位【id】为【key】的标签来获取搜索框对象:

Python翻页爬取快手 python爬虫 如何翻页_Python翻页爬取快手_09


input_key = browser.find_element_by_id(“key”)

👉4、在输入框中输入关键字:【笔记本电脑】

搜索框对象有个【send_keys()】方法来进行关键字输入:

input_key.send_keys(‘笔记本电脑’)

Python翻页爬取快手 python爬虫 如何翻页_Python翻页爬取快手_10


👉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()