利用Selenium爬取淘宝商品信息
文章来源:公众号-智能化IT系统。
一. Selenium和PhantomJS介绍
Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样。由于这个性质,Selenium也是一个强大的网络数据采集工具,其可以让浏览器自动加载页面,这样,使用了异步加载技术的网页,也可获取其需要的数据。
Selenium模块是Python的第三方库,可以通过pip进行安装:
pip3 install selenium |
Selenium自己不带浏览器,需要配合第三方浏览器来使用。通过help命令查看Selenium的Webdriver功能,查看Webdriver支持的浏览器:
from selenium import webdriver help(webdriver) |
查看执行后的结果,如下图所示:
在这个案例中,采用PhantomJS。Selenium和PhantomJS的配合使用可以完全模拟用户在浏览器上的所有操作,包括输入框内容填写、单击、截屏、下滑等各种操作。这样,对于需要登录的网站,用户可以不需要通过构造表单或提交cookie信息来登录网站。
二. 案例介绍
这里所举的案例,是利用Selenium爬取淘宝商品信息,爬取的内容为淘宝网(https://www.taobao.com/)上男士短袖的商品信息,如下图所示:
这里可以看到,在用户输入淘宝后,需要模拟输入,在输入框输入“男士短袖”。
案例中使用Selenium和PhantomJS,模拟电脑的搜索操作,输入商品名称进行搜索,如图所示,“检查”搜索框元素。
并且如下图所示,“检查”下一页元素:
爬取的内容有商品价格、付款人数、商品名称、商家名称和地址,如下图所示:
最后把爬取数据存储到MongoDB数据库中。
三. 相关技术
小编这里把除了selenium之外所需要的知识列一下,这里就不做详细解释了,如果不清楚的话可以百度了解下。
mongoDB的使用,以及在python中用mongodb进行数据存储。
lxml,爬虫三大方法之一,解析效率比较高,使用难度相比正则表达式要低(上一篇文章的解析方法是正则表达式)。
间歇休息的方法:driver.implicitly_wait
四. 源代码
代码如下所示,可复制直接执行:
from selenium import webdriver from lxml import etree import time import pymongo client = pymongo.MongoClient('localhost', 27017) mydb = client['mydb'] taobao = mydb['taobao'] driver = webdriver.PhantomJS() driver.maximize_window() def get_info(url,page): page = page + 1 driver.get(url) driver.implicitly_wait(10) selector = etree.HTML(driver.page_source) infos = selector.xpath('//div[@class="item J_MouserOnverReq"]') for info in infos: data = info.xpath('div/div/a')[0] goods = data.xpath('string(.)').strip() price = info.xpath('div/div/div/strong/text()')[0] sell = info.xpath('div/div/div[@class="deal-cnt"]/text()')[0] shop = info.xpath('div[2]/div[3]/div[1]/a/span[2]/text()')[0] address = info.xpath('div[2]/div[3]/div[2]/text()')[0] commodity = { 'good':goods, 'price':price, 'sell':sell, 'shop':shop, 'address':address } taobao.insert_one(commodity) if page <= 50: NextPage(url,page) else: pass def NextPage(url,page): driver.get(url) driver.implicitly_wait(10) driver.find_element_by_xpath('//a[@trace="srp_bottom_pagedown"]').click() time.sleep(4) driver.get(driver.current_url) driver.implicitly_wait(10) get_info(driver.current_url,page) if __name__ == '__main__': page = 1 url = 'https://www.taobao.com/' driver.get(url) driver.implicitly_wait(10) driver.find_element_by_id('q').clear() driver.find_element_by_id('q').send_keys('男士短袖') driver.find_element_by_class_name('btn-search').click() get_info(driver.current_url,page) |
五. 代码解析
(1)1~4行
导入程序需要的库,selenium库用于模拟请求和交互。lxml解析数据。pymongo是mongoDB 的交互库。
(2)6~8行
打开mongoDB,进行存储准备。
(3)10~11行
最大化PhantomJS窗口。
(4)14~33行
利用lxml抓取网页数据,分别定位到所需要的信息,并把信息集成至json,存储至mongoDB。
(5)35~47行
分页处理。
(5)51~57行
利用selenium模拟输入“男士短袖”,并模拟点击操作,并获取到对应的页面信息,调取主方法解析。
———————————————————
公众号-智能化IT系统。每周都有技术文章推送,包括原创技术干货,以及技术工作的心得分享。扫描下方关注。
利用Selenium爬取淘宝商品信息相关推荐
- python爬虫——用selenium爬取淘宝商品信息
python爬虫--用selenium爬取淘宝商品信息 1.附上效果图 2.淘宝网址https://www.taobao.com/ 3.先写好头部 browser = webdriver.Chrome ...
- 利用Selenium爬取淘宝商品
淘宝页面数据是采用Ajax获取的,但是这些Ajax接口参数比较复杂,可能会加入加密秘钥.对于这种页面,最方便的方法是通过selenium.可以用Selenium来模拟浏览器操作,抓取淘宝商品信息. 1 ...
- 爬虫学习笔记——Selenium爬取淘宝商品信息并保存
在使用selenium来模拟浏览器操作,抓取淘宝商品信息前,先完成一些准备工作. 准备工作:需要安装selenium,pyquery,以及Chrome浏览器并配置ChromeDriver. 安装sel ...
- python+selenium爬取淘宝商品信息+淘宝自动登录——爬虫实战
1.前言 继续学习爬虫内容,这回是以selenium模拟操作进行抓取,其中有几个需要登陆的注意事项. 2.自动登陆+查找页面 由于现在淘宝的反爬机制,需要登陆才好下一步操作.在搜索输入后页面会调入登陆 ...
- 使用python selenium爬取淘宝商品信息 自动登录淘宝和爬取某一宝贝的主图,属性图和详情图等等
selenium作为一个自动化测试工具非常好用,谁用谁知道啊. 先说如何登录淘宝,淘宝现在直接用会员名和密码登录会有滑块验证,找了网上说的几种方法和自己尝试了一番效果还是不太理想,实测过程中,即使滑块 ...
- python使用Selenium爬取淘宝商品信息
由于淘宝对自动化工具进行了识别,直接进入登录页面滑动二维码一直会报错,所以采取了曲线救国的方式,通过用微博账号来登录淘宝.刚自学<Python3网络爬虫开发实战>,和里面的代 ...
- Python爬虫+selenium——爬取淘宝商品信息和数据分析
浏览器驱动 点击下载chromedrive .将下载的浏览器驱动文件chromedriver丢到Chrome浏览器目录中的Application文件夹下,配置Chrome浏览器位置到PATH环境. 需 ...
- selenium爬取淘宝商品基础数据以及商品详情(茶叶数据)
selenium爬取淘宝商品基础数据以及商品详情 目录 网页分析 确定要爬取的数据 分析网页构成 爬取流程 登入 爬取基础数据以及商品详情 爬取基础数据 爬取商品详情 淘宝滑动验证码 保存EXCEL中 ...
- 爬取淘宝商品信息selenium+pyquery+mongodb
''' 爬取淘宝商品信息,通过selenium获得渲染后的源码,pyquery解析,mongodb存储 '''from selenium import webdriver from selenium. ...
最新文章
- oracle 11g RAC Grid Infrastructure
- OpenCV 透视变换
- Redis之慢查询分析
- python爬虫什么书好_python爬虫入门06 | 爬取当当网 Top 500 本五星好评书籍
- Gitlab的使用总结
- MYSQL IFNULL函数的使用
- 《Algorithms》—— 链表实现栈,队列,背包
- select2根据传入的url参数动态添加option
- 声网 视频通话SDK小结
- 微电子电路——例题总结
- EnableViewState和ViewStateMode
- 二战十大致命武器之“喷火”式战斗机
- sicilyOJ 09广东省赛重现H Westward Journey Online(线段树)
- MongoDB——explain执行计划详解
- 3d人体智能测试软件,人体系统女性3Dapp
- 两个质数互质是_两个数互质是什么意思 如何判断
- 仿微信二维码极速扫描(MLKit及CameraX初体验),安卓消息分发机制
- 巴比特 | 元宇宙每日必读:在NFT领域卖铲子能有多赚钱?云厂商们认为这就像“发电厂”业务...
- Unity发布项目,记录日志并写入文件。
- Phun-有趣的二维物理引擎
热门文章
- auto errored after 报错解决_css重点知识和bug解决方法
- dw指向html的根路径,dreamweaver中绝对、文档相对和站点根目录相对路径区分
- oracle 向右去整,使用table表格无端的整体向右偏移一段距离
- linux ps转为tiff,转换为TIFF,将图像转换为TIFF,在线图像转换为TIFF
- 对话框绘制完成消息_Word小技巧-一分钟教会你快速绘制组织架构图
- opencsv : 解析CSV
- Promise 上手
- phonegap html 缩放,phonegap常用事件总结(必看篇)
- 双网卡连接mysql数据库_双网卡实现两台电脑共享上网经验笔记
- hexo不渲染html文件,解决hexo渲染的页面中有br的问题