Python数据挖掘(爬虫强化)

简介: (我喜欢雨天,因为雨天我可以回到童年踩水花!哈!) 2018年 --7月--12日 : 多云又暴雨 T—T 前言 我要把爬虫的终极利器介绍一下,这个只要是我们肉眼能看到的,就算在源码中或者在json中,或是post也无法得到的数据,我们都可以获取到,雷同F12后源码暴露在你面前一样! 这次需要用到selenium家族的一些成员,它们各司其职,各个身怀绝技。

(我喜欢雨天,因为雨天我可以回到童年踩水花!哈!)

2018年 --7月--12日 : 多云又暴雨 T—T

前言

我要把爬虫的终极利器介绍一下,这个只要是我们肉眼能看到的,就算在源码中或者在json中,或是post也无法得到的数据,我们都可以获取到,雷同F12后源码暴露在你面前一样!

这次需要用到selenium家族的一些成员,它们各司其职,各个身怀绝技

先介绍一下selenium模块:Selenium is a suite of tools specifically for automating web browsers.(Selenium是一套专门用于自动化web浏览器的工具。)

---:(这里补充一下,在需要用到这种大型模块的时候,一定要去读官方文档,不要去听百度里面和一些断章取义的人瞎写的内容,他们更容易把你带偏。)

这个Selenium模块主要是应对我们自动浏览网页数据所需要用的,让程序来执行半智能,前提你要教会它去做什么事情!

直接介绍此次所需要用到的家族模块:

1 from selenium import webdriver
2 import time
3 from selenium.webdriver.common.keys import Keys
4 from selenium.webdriver.common.action_chains import ActionChains
5 from selenium.webdriver.common.by import By

一、每一个解释一下哈,按顺序对号:

1、主模块的嵌入,主要是应对控制程序自动打开浏览器浏览网页功能。

2、作为开发人员,尤其是对网页自动化测试的开发工具必须需要time模块来制约程序的访问时间,因为可能网站会直接把你IP封掉。

3、selenium 模块家族成员Keys,此成员是应当以模拟键盘操作,应对模拟输入用户登录名和密码,或者价值数据索引输入。

4、selenium 模块家族成员ActionChains,它则是应对模拟鼠标操作,对与鼠标的双击,单击,左右键,应对我们翻页,搜索按钮的点击功能。

5、selenium 模块家族成员By,这个则是我们要教会它所要做的事情,也是我们数据挖掘又要用到的核心价值功能之一,应对价值数据抓取。

二、开发初步:

1、操作程序打开浏览器并打开我们需要进入的网页:

 

1 url = 'https://www.xxx.com'
2 driver=webdriver.Chrome()
3 driver.get(url)
4 time.sleep(5)
5 driver.quit()

 

这里可以自己测试一下,我所使用的是Google的浏览器,你们可以尝试使用Firefox,他们有一些的区别,主要是站点的区别!

2、进入页面后锁定tag

html:

1 <div id="aaa" class="bbb" name="ccc">
2     <p></p>
3     <p><a></p>
4 </div>

python:

 1 element = driver.find_element_by_id("aaa")
 2 frame = driver.find_element_by_tag_name("div")
 3 cheese = driver.find_element_by_name("ccc")
 4 cheeses = driver.find_elements_by_class_name("bbb")
 5 
 6 or
 7 
 8 from selenium.webdriver.common.by import By
 9 element = driver.find_element(by=By.ID, value="aaa")
10 frame = driver.find_element(By.TAG_NAME, "div")
11 cheese = driver.find_element(By.NAME, "ccc")
12 cheeses = driver.find_elements(By.CLASS_NAME, "bbb")

这里每一个都是锁定tag树,它们都是根据id,class,name,tagname来定义的。

1 xpath_class = driver.find_element_by_xpath('//div[@class="bbb"]/p')
2 xpath_id = driver.find_element_by_xpath('//div[@id="aaa"]/p')

这是通用方法的,Xpath方法,它们都输属于解析网页的内容锁定tag。

3、处理操作:

当我们锁定功能键的tag属性的时候,我们就可以进一步操作,比如换页,搜索功能的实现,对于模拟键盘输入的可以参考我的另一篇博客,《python自动化爬虫》

这里我们就介绍一下模拟鼠标的操作:

1 elem = driver.find_element_by_xpath('//a[@id="tagname"]')
2 ActionChains(driver).double_click(elem).perform()
3 time.sleep(3)

因为时间问题,我只是介绍一下鼠标左键单击换页操作,其他的何以参考一下官方文档:Selenium Webdrive

ActionChains:锁定浏览器,double_click锁定tag标签树,.perform():点击标签树

4、获取价值数据

这里的操作类似与Xpath的语法:

 

driver.find_elements_by_tag_name('td')[3].text
driver.find_elements_by_tag_name('a').get_attribute('href')

 

这里注意一下elements,指所有的tag-> a比标签的href,这里是list格式,需要遍历。

5、最后来一串完整代码:

 1 from selenium import webdriver
 2 import time
 3 import lxml.html as HTML
 4 from bs4 import BeautifulSoup
 5 from selenium.webdriver.common.keys import Keys
 6 from selenium.webdriver.common.action_chains import ActionChains
 7 from pymongo import MongoClient,ASCENDING, DESCENDING
 8 from selenium.webdriver.common.by import By
 9 def parser():
10       url = 'https://www.xxx.com'
11       driver=webdriver.Chrome()
12       driver.get(url)
13       time.sleep(5)
14       for i in range(1,675):
15             a = driver.find_element_by_xpath('//div[@class="aaa"]')
16             tr =  a.find_elements_by_tag_name('tr')
17             for j in xrange(1,len(tr)):
18                   quantity = tr[j].find_elements_by_tag_name('td')[3].text
19                   producturl = tr[j].find_elements_by_tag_name('td')[0].find_elements_by_tag_name("div")[1].find_element_by_tag_name('ul').find_element_by_tag_name('li').find_element_by_tag_name('a').get_attribute('href')
20                   producturl_db(producturl,quantity)
21             elem = driver.find_element_by_xpath('//a[@id="eleNextPage"]')
22             ActionChains(driver).double_click(elem).perform()
23             time.sleep(3)
24       
25       driver.quit()
selenium有个小GUB,就是在用Xpath的时候,你已经找到父级tag,但是这个父级很多,比如tr,你如果遍历它,寻找td的话,那么你还是使用find_elements_by_tag_name,因为那个会初始化,不会管你找到那个父级。所以这里是需要注意的!
最后祝你们加油!!!!!

 

Welcome to Python world! I have a contract in this world! How about you?
相关文章
|
2月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
2月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
1183 1
|
3月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
2月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
381 0
|
2月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
2月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
3月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
2月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
3月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
682 19
|
2月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接

推荐镜像

更多