菜单

采取Selenium爬取天猫商品音信

2019年4月20日 - Php

明日人们正是是买个牙刷可能都会在天猫方面,而且在买东西的时候每一种人都会做的1件业务正是看研究,看看前边买家商量了解商品质量,外观是否和图片一样等等。可是一旦的确想要一条一条去看的话,那日子是真的要大多,当然了假设买的小物件那倒无所谓,如若是相比高贵的物料就务须得好赏心悦目了(PS:在笔者心里100之上便是贵重物品,哈哈哈哈)

一. Selenium和PhantomJS介绍

图片 1

Selenium是一个用于Web应用程序测试的工具,Selenium直接运营在浏览器中,就如真的的用户在操作同样。由于这几个本性,Selenium也是2个强硬的互连网数据收罗工具,其得以让浏览器自动加载页面,这样,使用了异步加载技艺的网页,也可获得其急需的数额。

 

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冠道L地址,具体步骤:

查看实施后的结果,如下图所示:

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

图片 3

然后去除不供给的字段,获取自个儿想要的内容

在那么些案例中,选取PhantomJS。Selenium和PhantomJS的十三分使用能够完全模仿用户在浏览器上的保有操作,包罗输入框内容填写、单击、截屏、下滑等各样操作。那样,对于须要登陆的网址,用户能够不需求经过结构表单或提交cookie音信来报到网址。

图片 4

二. 案例介绍

 

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

探望运营后的成效图

图片 5

图片 6

此地能够见见,在用户输入天猫后,要求效法输入,在输入框输入“男人短袖”。

 

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

假如你想要实行简短多少解析的话,那能够把爬取下来的评价保存下去。

图片 7

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

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

它能够是如此的

图片 8

图片 9

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

 

图片 10

也得以是那样的

谈到底把爬取数据存款和储蓄到MongoDB数据库中。

图片 11

三. 相关才能

此处把除了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地图