小白学 Python 爬虫(29):Selenium 获取某大型电商网站商品信息

小白学 Python 爬虫(29):Selenium 获取某大型电商网站商品信息

人生苦短,我用 Python

前文传送门:

小白学 Python 爬虫(1):开篇

小白学 Python 爬虫(2):前置准备(一)基本类库的安装

小白学 Python 爬虫(3):前置准备(二)Linux基础入门

小白学 Python 爬虫(4):前置准备(三)Docker基础入门

小白学 Python 爬虫(5):前置准备(四)数据库基础

小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装

小白学 Python 爬虫(7):HTTP 基础

小白学 Python 爬虫(8):网页基础

小白学 Python 爬虫(9):爬虫基础

小白学 Python 爬虫(10):Session 和 Cookies

小白学 Python 爬虫(11):urllib 基础使用(一)

小白学 Python 爬虫(12):urllib 基础使用(二)

小白学 Python 爬虫(13):urllib 基础使用(三)

小白学 Python 爬虫(14):urllib 基础使用(四)

小白学 Python 爬虫(15):urllib 基础使用(五)

小白学 Python 爬虫(16):urllib 实战之爬取妹子图

小白学 Python 爬虫(17):Requests 基础使用

小白学 Python 爬虫(18):Requests 进阶操作

小白学 Python 爬虫(19):Xpath 基操

小白学 Python 爬虫(20):Xpath 进阶

小白学 Python 爬虫(21):解析库 Beautiful Soup(上)

小白学 Python 爬虫(22):解析库 Beautiful Soup(下)

小白学 Python 爬虫(23):解析库 pyquery 入门

小白学 Python 爬虫(24):2019 豆瓣电影排行

小白学 Python 爬虫(25):爬取股票信息

小白学 Python 爬虫(26):为啥买不起上海二手房你都买不起

小白学 Python 爬虫(27):自动化测试框架 Selenium 从入门到放弃(上)

小白学 Python 爬虫(28):自动化测试框架 Selenium 从入门到放弃(下)

目标

先介绍下我们本篇文章的目标,如图:

小白学 Python 爬虫(29):Selenium 获取某大型电商网站商品信息

本篇文章计划获取商品的一些基本信息,如名称、商店、价格、是否自营、图片路径等等。

准备

首先要确认自己本地已经安装好了 Selenium 包括 Chrome ,并已经配置好了 ChromeDriver 。如果还没安装好,可以参考前面的前置准备。

分析

接下来我们就要分析一下了。

首先,我们的搜索关键字是 iPhone ,直接先翻到最后一页看下结果,发现有好多商品并不是 iPhone ,而是 iPhone 的手机壳,这个明显不是我们想要的结果,小编这里选择了一下品牌 Apple ,再翻到最后一页,这次就全都是手机了。

小白学 Python 爬虫(29):Selenium 获取某大型电商网站商品信息

先把地址栏的地址 Copy 出来看一下,里面有很多无效参数:

https://search.jd.com/search?keyword=iPhone&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&ev=exbrand_Apple%5E&page=199&s=5933&click=0

如果问小编怎么知道是无效参数还是有效参数,emmmmmmmmm

这个要么靠经验,一般大网站的参数的命名都是比较规范的,当然也不排除命名不规范的。还有一种办法就是试,小编这边试出来的结果是这样滴:

https://search.jd.com/Search?keyword=iPhone&ev=exbrand_Apple

第一个参数 keyword 就是我们需要的商品名称,第二个参数 ev 是品牌的参数。

接下来我们看如何获取商品的详细信息,我们使用 F12 打开开发者模式,使用看下具体的信息都放在哪里:

小白学 Python 爬虫(29):Selenium 获取某大型电商网站商品信息

可以看到,我们想要获取的信息在这个页面的 DOM 节点中都能获取到。

接下来因为我们是使用 Selenium 来模拟浏览器访问电商网站,所以后续的接口分析也就不需要做了,直接获取浏览器显示的内容的源代码就可以轻松获取到各种信息。

获取商品列表页面

首先,我们需要构造一个获取商品列表页面的 URL ,这个上面已经得到了,接下来就是使用 Selenium 来获取这个页面了:

from selenium import webdriver from selenium.common.exceptions import TimeoutException driver = webdriver.Chrome() driver.implicitly_wait(10) driver.set_window_size(1280,800) def index_page(page): """ 抓取索引页 :param page: 页码 """ print('正在爬取第', str(page), '页数据') try: url = 'https://search.jd.com/Search?keyword=iPhone&ev=exbrand_Apple' driver.get(url) if page > 1: input = driver.find_element_by_xpath('//*[@id="J_bottomPage"]/span[2]/input') button = driver.find_element_by_xpath('//*[@id="J_bottomPage"]/span[2]/a') input.clear() input.send_keys(page) button.click() get_products() except TimeoutException: index_page(page)

这里我们依然使用隐式等待来进行 URL 访问,这里小编通过 xpath 的方式获取到了整个页面最下面的翻页组件:

小白学 Python 爬虫(29):Selenium 获取某大型电商网站商品信息

小编这里的翻页实际上是使用这里的输入框和后面的确认按钮进行的。

获取商品详细数据

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwggsz.html