应用Python爬取Tmall商品新闻并开始展览多少可视化

今昔人们不畏是买个牙刷可能都会在Taobao方面,而且在买东西的时候每一个人都会做的1件事情就是看评论,看看此前买家评论通晓商质量量,外观是否和图纸相同等等。可是若是确实想要一条一条去看的话,那日子是真的要很多,当然了壹旦买的小物件这倒无所谓,假使是比较华贵的物品就必须得好雅观了(PS:在作者心里拾0上述正是贵重物品,哈哈哈哈)

一. Selenium和PhantomJS介绍

图片 1

Selenium是多少个用来Web应用程序测试的工具,Selenium直接运营在浏览器中,仿佛真正的用户在操作1样。由于这些本性,Selenium也是四个强硬的网络数据收集工具,其能够让浏览器自动加载页面,这样,使用了异步加载技术的网页,也可收获其供给的多少。

 

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

假设果形似人为了让自个儿买的东西放心当然是选取一条一条看,也许直接去实体店买。不过身为技(chui)术(niu)人(zhuang)员(bi)的小编,肯定是用Python批量爬取天猫商品音信并进行简单的多少解析啦~~~~

pip3 install selenium

图片 2

Selenium自个儿不带浏览器,须求合营第一方浏览器来行使。通过help命令查看Selenium的Webdriver功用,查看Webdriver协理的浏览器:

 

from selenium import webdriver

help(webdriver)

想要爬取评论第3件事正是找到实际的U奥迪Q5L地址,具体步骤:

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

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

图片 3

接下来去除不供给的字段,获取本身想要的始末

在那个案例中,采纳PhantomJS。Selenium和PhantomJS的非常使用能够完全模仿用户在浏览器上的有着操作,包罗输入框内容填写、单击、截屏、下滑等各样操作。那样,对于急需登录的网址,用户能够不要求通过结构表单或提交cookie新闻来报到网址。

图片 4

二. 案例介绍

 

此地所举的案例,是利用Selenium爬取天猫商品音信,爬取的剧情为Taobao网(https://www.taobao.com/)上男士短袖的商品信息,如下图所示:

看望运转后的效果图

图片 5

图片 6

此地能够见到,在用户输入Taobao后,必要效法输入,在输入框输入“哥们短袖”。

 

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

即使您想要举行简短多少解析的话,那能够把爬取下来的评头品足保存下来。

图片 7

接下来用Python对其进展多少解析,对于数据可视化小编相比较推荐pyecharts

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

它能够是那般的

图片 8

图片 9

爬取的内容有商品价位、付款人数、商品名称、商家名称和位置,如下图所示:

 

图片 10

也得以是这么的

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

图片 11

三. 相关技能

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

  • mongoDB的应用,以及在python中用mongodb进行多少存款和储蓄。

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

  • 暂停休息的措施: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)

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