接纳Selenium爬取Taobao商品消息

至今人们正是是买个牙刷也许都会在天猫商城方面,而且在买东西的时候每一种人都会做的①件工作正是看评论,看看从前买家评论掌握商品质量,外观是还是不是和图纸相同等等。可是借使实在想要一条一条去看的话,那日子是真的要很多,当然了如若买的小物件那倒无所谓,借使是相比高尚的物料就不可能不得好雅观了(PS:在作者心里拾0以上就是贵重物品,哈哈哈哈)

一. Selenium和PhantomJS介绍

图片 1

Selenium是1个用以Web应用程序测试的工具,Selenium直接运维在浏览器中,就如真的的用户在操作一样。由于那几个天性,Selenium也是八个强大的网络数据收集工具,其能够让浏览器自动加载页面,那样,使用了异步加载技术的网页,也可获取其急需的数额。

 

Selenium模块是Python的第二方库,可以因而pip进行设置:

壹经是相似人为了让投机买的东西放心当然是选用一条一条看,恐怕直接去实体店买。不过身为技(chui)术(niu)人(zhuang)员(bi)的作者,肯定是用Python批量爬取天猫商城商品音讯并举行不难的多少解析啦~~~~

pip3 install selenium

图片 2

Selenium本人不带浏览器,必要相配第二方浏览器来利用。通过help命令查看Selenium的Webdriver成效,查看Webdriver帮衬的浏览器:

 

from selenium import webdriver

help(webdriver)

想要爬取评论第2件事就是找到实际的UTiggoL地址,具体步骤:

查阅执行后的结果,如下图所示:

  1. F1贰(开发者选项)
  2. Notework
  3. F5(刷新)
  4. feedRateList(文件名)
  5. Headers
  6. 复制Request URL

图片 3

下一场去除不供给的字段,获取本身想要的情节

在这一个案例中,选拔PhantomJS。Selenium和PhantomJS的相配使用能够完全模仿用户在浏览器上的富有操作,包蕴输入框内容填写、单击、截屏、下滑等各样操作。那样,对于急需登录的网址,用户能够不必要通过结构表单或提交cookie信息来报到网址。

图片 4

贰. 案例介绍

 

那边所举的案例,是利用Selenium爬取Tmall商品消息,爬取的内容为Taobao网(https://www.taobao.com/)上男士短袖的商品信息,如下图所示:

看望运维后的成效图

图片 5

图片 6

那边能够见到,在用户输入Tmall后,须求效法输入,在输入框输入“男人短袖”。

 

案例中使用Selenium和PhantomJS,模拟电脑的追寻操作,输入商品名称实行搜寻,如图所示,“检查”搜索框成分。

只要您想要举办简短多少解析的话,那可以把爬取下来的评论保存下去。

图片 7

下一场用Python对其进展数量解析,对于数据可视化作者比较推荐pyecharts

与此同时如下图所示,“检查”下一页成分:

它能够是那般的

图片 8

图片 9

爬取的始末有商品价位、付款人数、商品名称、商行名称和地点,如下图所示:

 

图片 10

也足以是这么的

末段把爬取数据存款和储蓄到MongoDB数据库中。

图片 11

叁. 相关技能

此间把除了selenium之外所要求的知识列一下,那里就不做详细表明了,若是不精通的话能够百度询问下。

  • mongoDB的使用,以及在python中用mongodb进行数量存款和储蓄。

  • lxml,爬虫叁大方法之一,解析效用相比高,使用难度相比较正则说明式要低(上1篇文章的剖析方法是正则表明式)。

  • 暂停休息的章程:driver.implicitly_wait

四. 源代码

代码如下所示,可复制直接执行:

from selenium import webdriverfrom lxml import etreeimport timeimport pymongoclient = pymongo.MongoClient('localhost',  27017)mydb = client['mydb']taobao = mydb['taobao']driver = webdriver.PhantomJS()driver.maximize_window() def get_info:     page = page + 1     driver.get     driver.implicitly_wait(10)     selector = etree.HTML(driver.page_source)     infos = selector.xpath('//div[@]')     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[@]/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     else:        passdef NextPage:     driver.get     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     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~4行

导入程序要求的库,selenium库用于模拟请求和互动。lxml解析数据。pymongo是mongoDB
的交互库。

6~8行

开辟mongoDB,实行仓库储存准备。

10~11行

最大化PhantomJS窗口。

14~33行

动用lxml抓取网页数据,分别定位到所急需的音信,并把新闻集成至json,存款和储蓄至mongoDB。

35~47行

分页处理。

51~57行

运用selenium模拟输入“男生短袖”,并效仿点击操作,并赢获得对应的页面音信,调取主方法分析。

———————————————————

大众号-智能化IT系统。每周都有技术小说推送,包罗原创技术干货,以及技巧工作的心得分享。扫描下方关心。

图片 12

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图