菜单

利用Selenium爬取Tmall商品新闻

2019年4月16日 - Java

当今人们正是是买个牙刷也许都会在天猫商城方面,而且在买东西的时候各种人都会做的一件事情就是看评论,看看从前买家评论掌握商质量量,外观是还是不是和图片同样等等。不过假若实在想要一条一条去看的话,那日子是真的要多数,当然了一旦买的小物件那倒无所谓,假如是比较高雅的物品就必须得好赏心悦目了(PS:在笔者心里100之上正是贵重货色,哈哈哈哈)

一. Selenium和PhantomJS介绍

图片 1

Selenium是一个用以Web应用程序测试的工具,Selenium直接运维在浏览器中,就像是真的的用户在操作同样。由于那本性格,Selenium也是三个精锐的互联网数据搜聚工具,其能够让浏览器自动加载页面,那样,使用了异步加载技巧的网页,也可获得其索要的数量。

 

Selenium模块是Python的第一方库,能够因此pip进行设置:

假若是形似人为了让祥和买的事物放心当然是选用一条一条看,也许直接去实体店买。然而身为技(chui)术(niu)人(zhuang)员(bi)的作者,分明是用Python批量爬取天猫商城商品新闻并开始展览简短的数额解析啦~~~~

pip3 install selenium

图片 2

Selenium自个儿不带浏览器,要求同盟第2方浏览器来选用。通过help命令查看Selenium的Webdriver功用,查看Webdriver援救的浏览器:

 

from selenium import webdriver

help(webdriver)

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

翻开推行后的结果,如下图所示:

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

图片 3

然后去除不要求的字段,获取本人想要的内容

在这一个案例中,采纳PhantomJS。Selenium和PhantomJS的特出使用能够完全模拟用户在浏览器上的具备操作,包蕴输入框内容填写、单击、截屏、下滑等各样操作。那样,对于需求登陆的网址,用户能够不供给通过结构表单或提交cookie新闻来报到网址。

图片 4

2. 案例介绍

 

此间所举的案例,是选取Selenium爬取天猫商品新闻,爬取的内容为Taobao网(https://www.taobao.com/)上男士短袖的商品信息,如下图所示:

探望运维后的职能图

图片 5

图片 6

此处能够看出,在用户输入天猫商城后,要求效法输入,在输入框输入“男生短袖”。

 

案例中央银行使Selenium和PhantomJS,模拟计算机的检索操作,输入商品名称举行查找,如图所示,“检查”搜索框成分。

就算你想要进行简易多少解析的话,那能够把爬取下来的评说保存下来。

图片 7

接下来用Python对其举行多少解析,对于数据可视化作者相比较推荐pyecharts

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

它可以是这般的

图片 8

图片 9

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

 

图片 10

也能够是如此的

末尾把爬取数据存储到MongoDB数据库中。

图片 11

3. 相关本事

此地把除了selenium之外所须要的知识列一下,那里就不做详细解释了,就算不驾驭的话能够百度精晓下。

四. 源代码

代码如下所示,可复制直接实施:

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)

5. 代码解析

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地图