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

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

前言

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

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

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

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

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

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

 from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

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

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

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

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

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

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

二、开发初步:

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

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

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

2、进入页面后锁定tag

html:

 <div id="aaa" class="bbb" name="ccc">
<p></p>
<p><a></p>
</div>

python:

 element = driver.find_element_by_id("aaa")
frame = driver.find_element_by_tag_name("div")
cheese = driver.find_element_by_name("ccc")
cheeses = driver.find_elements_by_class_name("bbb") or from selenium.webdriver.common.by import By
element = driver.find_element(by=By.ID, value="aaa")
frame = driver.find_element(By.TAG_NAME, "div")
cheese = driver.find_element(By.NAME, "ccc")
cheeses = driver.find_elements(By.CLASS_NAME, "bbb")

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

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

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

3、处理操作:

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

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

 elem = driver.find_element_by_xpath('//a[@id="tagname"]')
ActionChains(driver).double_click(elem).perform()
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、最后来一串完整代码:

 from selenium import webdriver
import time
import lxml.html as HTML
from bs4 import BeautifulSoup
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from pymongo import MongoClient,ASCENDING, DESCENDING
from selenium.webdriver.common.by import By
def parser():
url = 'https://www.xxx.com'
driver=webdriver.Chrome()
driver.get(url)
time.sleep(5)
for i in range(1,675):
a = driver.find_element_by_xpath('//div[@class="aaa"]')
tr = a.find_elements_by_tag_name('tr')
for j in xrange(1,len(tr)):
quantity = tr[j].find_elements_by_tag_name('td')[3].text
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')
producturl_db(producturl,quantity)
elem = driver.find_element_by_xpath('//a[@id="eleNextPage"]')
ActionChains(driver).double_click(elem).perform()
time.sleep(3) driver.quit()
selenium有个小GUB,就是在用Xpath的时候,你已经找到父级tag,但是这个父级很多,比如tr,你如果遍历它,寻找td的话,那么你还是使用find_elements_by_tag_name,因为那个会初始化,不会管你找到那个父级。所以这里是需要注意的!
最后祝你们加油!!!!!

Python数据挖掘(爬虫强化)的更多相关文章

  1. Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱(转)

    原文:http://www.52nlp.cn/python-网页爬虫-文本处理-科学计算-机器学习-数据挖掘 曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开 ...

  2. 【Python】Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱

    本文转载自:https://www.cnblogs.com/colipso/p/4284510.html 好文 mark http://www.52nlp.cn/python-%E7%BD%91%E9 ...

  3. 2019年Python数据挖掘就业前景前瞻

    Python语言的崛起让大家对web.爬虫.数据分析.数据挖掘等十分感兴趣.数据挖掘就业前景怎么样?关于这个问题的回答,大家首先要知道什么是数据挖掘.所谓数据挖掘就是指从数据库的大量数据中揭示出隐含的 ...

  4. Python数据挖掘课程

    [Python数据挖掘课程]一.安装Python及爬虫入门介绍[Python数据挖掘课程]二.Kmeans聚类数据分析及Anaconda介绍[Python数据挖掘课程]三.Kmeans聚类代码实现.作 ...

  5. 第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 4.提供图片或网站显示的学习进 ...

  6. 第三次作业-Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 过程. 5.写一篇不少于100 ...

  7. 第三次作业-MOOC学习笔记:Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 第一周 Requests库的爬 ...

  8. 一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取

    前几天小编给大家分享了数据可视化分析,在文尾提及了网易云音乐歌词爬取,今天小编给大家分享网易云音乐歌词爬取方法. 本文的总体思路如下: 找到正确的URL,获取源码: 利用bs4解析源码,获取歌曲名和歌 ...

  9. 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

    [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...

随机推荐

  1. 分享:使用 TypeScript 编写的游戏代码

    <上篇博客>我写出了我一直期望的 JavaScript 大型程序的开发模式,以及 TS(TypeScript) 的一些优势.博客完成之后,我又花了一天时间试用 TS,用它来重构之前编写的一 ...

  2. 线程池ThreadPoolTaskExecutor配置说明

    一般实际开发中经常用到多线程,所以需要使用线程池了, ThreadPoolTaskExecutor通常通过XML方式配置,或者通过Executors的工厂方法进行配置.  XML方式配置代码如下:交给 ...

  3. JSP(二):JSP九大内置对象、四个作用域对象

    jsp的九大内置对象:        内置对象:            jsp文件在转译成其对应的Servlet文件的时候自动生成的并声明的对象.我们在jsp页面中直接使用即可.        注意: ...

  4. java使用Jedis远程访问CentOs7linux时出现拒绝连接的错误

    使用Jedis出现Connection refused的解决方案 当我们利用Jedis操作服务器的Redis数据库时,需要先将远程服务器的端口(默认端口是6379)开放,命令如下:   #/sbin/ ...

  5. 彻底解决eclipse中tomcat启动速度缓慢的问题

    问题: Tomcat启动提示At least one JAR was scanned for TLDs yet contained no TLDs tomcat启动速度总是很慢,检查后发现tomcat ...

  6. 字节跳动19春招研发第一次在线笔试-A卷

    结果:凉. 说明 此博客仅为笔试记录所用,如涉及版权或保密问题,请联系我及时删除. 联系方式:georgehu716@qq.com 1. 找零 时间限制:C/C++ 1秒,其他语言 2秒 空间限制:C ...

  7. 记录以下docker的基本命令

    docker search xxx(tag)      在OFFICIAL上ok的是官方镜像    这里也可以去dockerhub上面看到   搜索xxx镜像docker images查看本地所安装的 ...

  8. hive中left/right join on连接中and与where的使用问题

    很多同学在进行表关联的时候,and和where的使用有时候分不清,在这里实操记录下. 创建人员信息表并写入数据 create table tmp.userinfo(id string,name str ...

  9. 使用Js进行linq处理

    需要引用的文件 <script src="~/js/linq/jquery.linq-vsdoc.js"></script><script src=& ...

  10. Mac_Sublime Text3(mac)一些插件和快捷键

    下载地址http://www.sublimetext.com/3 一.安装Package Control 按Ctrl + ` 调出console,粘贴下列安装代码到底部命令行并回车: import u ...