文章来源:公众号-智能化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爬取淘宝商品信息相关推荐

  1. python爬虫——用selenium爬取淘宝商品信息

    python爬虫--用selenium爬取淘宝商品信息 1.附上效果图 2.淘宝网址https://www.taobao.com/ 3.先写好头部 browser = webdriver.Chrome ...

  2. 利用Selenium爬取淘宝商品

    淘宝页面数据是采用Ajax获取的,但是这些Ajax接口参数比较复杂,可能会加入加密秘钥.对于这种页面,最方便的方法是通过selenium.可以用Selenium来模拟浏览器操作,抓取淘宝商品信息. 1 ...

  3. 爬虫学习笔记——Selenium爬取淘宝商品信息并保存

    在使用selenium来模拟浏览器操作,抓取淘宝商品信息前,先完成一些准备工作. 准备工作:需要安装selenium,pyquery,以及Chrome浏览器并配置ChromeDriver. 安装sel ...

  4. python+selenium爬取淘宝商品信息+淘宝自动登录——爬虫实战

    1.前言 继续学习爬虫内容,这回是以selenium模拟操作进行抓取,其中有几个需要登陆的注意事项. 2.自动登陆+查找页面 由于现在淘宝的反爬机制,需要登陆才好下一步操作.在搜索输入后页面会调入登陆 ...

  5. 使用python selenium爬取淘宝商品信息 自动登录淘宝和爬取某一宝贝的主图,属性图和详情图等等

    selenium作为一个自动化测试工具非常好用,谁用谁知道啊. 先说如何登录淘宝,淘宝现在直接用会员名和密码登录会有滑块验证,找了网上说的几种方法和自己尝试了一番效果还是不太理想,实测过程中,即使滑块 ...

  6. python使用Selenium爬取淘宝商品信息

           由于淘宝对自动化工具进行了识别,直接进入登录页面滑动二维码一直会报错,所以采取了曲线救国的方式,通过用微博账号来登录淘宝.刚自学<Python3网络爬虫开发实战>,和里面的代 ...

  7. Python爬虫+selenium——爬取淘宝商品信息和数据分析

    浏览器驱动 点击下载chromedrive .将下载的浏览器驱动文件chromedriver丢到Chrome浏览器目录中的Application文件夹下,配置Chrome浏览器位置到PATH环境. 需 ...

  8. selenium爬取淘宝商品基础数据以及商品详情(茶叶数据)

    selenium爬取淘宝商品基础数据以及商品详情 目录 网页分析 确定要爬取的数据 分析网页构成 爬取流程 登入 爬取基础数据以及商品详情 爬取基础数据 爬取商品详情 淘宝滑动验证码 保存EXCEL中 ...

  9. 爬取淘宝商品信息selenium+pyquery+mongodb

    ''' 爬取淘宝商品信息,通过selenium获得渲染后的源码,pyquery解析,mongodb存储 '''from selenium import webdriver from selenium. ...

最新文章

  1. oracle 11g RAC Grid Infrastructure
  2. OpenCV 透视变换
  3. Redis之慢查询分析
  4. python爬虫什么书好_python爬虫入门06 | 爬取当当网 Top 500 本五星好评书籍
  5. Gitlab的使用总结
  6. MYSQL IFNULL函数的使用
  7. 《Algorithms》—— 链表实现栈,队列,背包
  8. select2根据传入的url参数动态添加option
  9. 声网 视频通话SDK小结
  10. 微电子电路——例题总结
  11. EnableViewState和ViewStateMode
  12. 二战十大致命武器之“喷火”式战斗机
  13. sicilyOJ 09广东省赛重现H Westward Journey Online(线段树)
  14. MongoDB——explain执行计划详解
  15. 3d人体智能测试软件,人体系统女性3Dapp
  16. 两个质数互质是_两个数互质是什么意思 如何判断
  17. 仿微信二维码极速扫描(MLKit及CameraX初体验),安卓消息分发机制
  18. 巴比特 | 元宇宙每日必读:在NFT领域卖铲子能有多赚钱?云厂商们认为这就像“发电厂”业务...
  19. Unity发布项目,记录日志并写入文件。
  20. Phun-有趣的二维物理引擎

热门文章

  1. auto errored after 报错解决_css重点知识和bug解决方法
  2. dw指向html的根路径,dreamweaver中绝对、文档相对和站点根目录相对路径区分
  3. oracle 向右去整,使用table表格无端的整体向右偏移一段距离
  4. linux ps转为tiff,转换为TIFF,将图像转换为TIFF,在线图像转换为TIFF
  5. 对话框绘制完成消息_Word小技巧-一分钟教会你快速绘制组织架构图
  6. opencsv : 解析CSV
  7. Promise 上手
  8. phonegap html 缩放,phonegap常用事件总结(必看篇)
  9. 双网卡连接mysql数据库_双网卡实现两台电脑共享上网经验笔记
  10. hexo不渲染html文件,解决hexo渲染的页面中有br的问题