Python使用selenium进行爬虫(一)
JAVA爬虫框架很多,类似JSOUP,WEBLOGIC之类的爬虫框架都十分好用,个人认为爬虫的大致思路就是:
1、挑选需求爬的URL地址,将其放入需求网络爬虫的队列,也可以把爬到的符合一定需求的地址放入这个队列中
2、获取一个url进行DNS解析,获取其主机IP
3、针对这个url地址将其页面加载下来(也就是这个页面的html或者jsp)加载下来,不同的框架有不同的页面处理方法,和抽取有用信息的方法,类似根据id选择抽取,根据标签抽取,根据class抽取,根据css抽取等。
4、最后Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等
在这里我们介绍一种十分方便的爬虫工具:selenium,selenium爬虫个人感觉适合对那种需求登录的页面进行爬取,因为它本身可以加载浏览器驱动,模拟登录这个操作,然后把需求的静态页面加载进来。
from selenium import webdriver
import time # browser = webdriver.Chrome()
# browser = webdriver.Firefox() # help(webdriver) #加载谷歌浏览器驱动,这里我使用的谷歌,你也可以下载firefox或者ie的驱动
#使用什么驱动则模拟该操作的就是这个浏览器,需要注意的是,chromedriver.exe对不同浏览器版本也是有自己版本的
browser = webdriver.Chrome("D:\driver\chromedriver.exe") #这里通过get请求需要模拟登录的页面
browser.get("https://crm.xiaoshouyi.com/global/login.action")
#
# print(browser.page_source) # browser.switch_to_frame("page_source") #这里通过name选择器获取登录名和密码并把需要set值给放进去
browser.find_element_by_name("loginName").send_keys("你的登录名")
browser.find_element_by_name("password").send_keys("你的登录密码")
#这一步模拟点击登录
browser.find_element_by_class_name("pg-btn-submit").click() # browser.implicitly_wait(10)
time.sleep(5) #这一步模拟点击某个a标签连接
hrefs=browser.find_element_by_partial_link_text(u"客户")
hrefs.click() time.sleep(5) #我们可以通过browser.page_source把当前页面的静态资源打印出来看看,然后根据自己需求进行提取有用的资源
print(browser.page_source)
现在我们可以看到,我们已经把页面的静态资源加载到了browser里面,我们可以开始根据自己的需求从browser里面拿自己需要的资源了,我这里先简单介绍一下selenium的使用,有关其具体选择器和选择方法,如下所示:
browser.find_element_by_id("id的name")
browser.find_element("")
browser.find_element_by_tag_name("标签name")
browser.find_element_by_class_name("classname")
browser.find_element_by_css_selector("css选择器,cssname")
browser.find_element_by_partial_link_text("带有链接的文本,获取其跳转地址,后面跟click事件可以模拟跳转") browser.find_element_by_xpath("里面可以跟正则表达式,XPath一般在实际自动化测试项目中用到比较多,其定位元素十分方便")
此处例举xpath用法:
假如一个html是这个样子的:
<html>
<body>
<form id="myform">
<input name="name" type="text" />
<input name="pwd" type="password" />
<input name="continue" type="submit" value="Login" />
</form>
</body>
<html>
我们需要用xpath定位他的pwd:
pwd = browser.find_element_by_xpath("//form[input/@name='pwd']")---获取form下input标签中name为pwd的资源
pwd = browser.find_element_by_xpath("//form[@id='loginForm']/input[2]")---获取第二个input标签的资源
pwd = browser.find_element_by_xpath("//input[@name='pwd']")---直接获取input为pwd的资源
以上为selenium的基础用法,欢迎提问评论
Python使用selenium进行爬虫(一)的更多相关文章
- Python之Selenium的爬虫用法
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手).也就是说 Sel ...
- 【爬虫】如何用python+selenium网页爬虫
一.前提 爬虫网页(只是演示,切勿频繁请求):https://www.kaola.com/ 需要的知识:Python,selenium 库,PyQuery 参考网站:https://selenium- ...
- 第14.15节 爬虫实战1:使用Python和selenium实现csdn博文点赞
写在前面:本文仅供参考学习,请勿用作它途,禁止转载! 在开始学爬虫时,学习了csdn博客专家(id:明天依旧可好 | 柯尊柏)<实战项目二:实现CSDN自动点赞>的文章,文章介绍了通过Py ...
- 【Python】 Selenium 模拟浏览器 寻路
selenium 最开始我碰到SE,是上学期期末,我们那个商务小组做田野调查时发的问卷的事情.当时在问卷星上发了个问卷,但是当时我对另外几个组员的做法颇有微词,又恰好开始学一些软件知识了,就想恶作剧( ...
- Python 配置 selenium 模拟浏览器环境,带下载链接
使用浏览器渲染引擎.直接用浏览器在显示网页时解析HTML,应用CSS样式并执行JavaScript的语句. 这方法在爬虫过程中会打开一个浏览器,加载该网页,自动操作浏览器浏览各个网页,顺便把数据抓下来 ...
- selenium+phantomJS爬虫,适用于登陆限制强,点触验证码等一些场景
selenium是非常出名的自己主动化測试工具,多数场景是測试project师用来做自己主动化測试,可是相同selenium能够作为基本上模拟浏览器的工具,去爬取一些基于http request不能或 ...
- selenium在爬虫领域的初涉(自动打开网站爬取信息)
selenium简介 Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.这个工具的主要功能包括:测试与浏览器的兼容性--测试你的应 ...
- 安装python的selenium库和驱动
对于使用selenium来进行python爬虫操作可以简化好多操作,它实际上的运行就是通过打开一个浏览器来一步一步的按照你的代码来执行 如果安装过python编译器后应该pip工具也是有的,验证pyt ...
- Python初学者之网络爬虫(二)
声明:本文内容和涉及到的代码仅限于个人学习,任何人不得作为商业用途.转载请附上此文章地址 本篇文章Python初学者之网络爬虫的继续,最新代码已提交到https://github.com/octans ...
随机推荐
- 51nod 1443 路径和树——最短路生成树
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1443 不只是做一遍最短路.还要在可以选的边里选最短的才行. 以为是 ...
- C# 深化基本概念
关于IDisposable的Dispose方法 .Net中GC会自动回收托管资源, 对于非托管资源应该使用Dispose方法. 在使用Dispose方法时,应注意避免在Dispose内部中继续释放托管 ...
- 开发商应用被App Store拒绝的79个原因
转自:http://www.gamelook.com.cn/2014/10/186017 作为iOS开发者,估计有很多都遇到过APP提交到App Store被拒,然后这些被拒的原因多种多样,今天小编收 ...
- 创建oracle数据库图示(一步一步教你安装oracle)
123456 密码 版权声明:本文为博主原创文章,未经博主允许不得转载.
- [pe531]Chinese leftovers
题意:1e6~1e6+5000之间任意两个之间同余方程组的解.余数为欧拉函数. 解题关键:线性筛预处理,扩展中国剩余定理暴力求解. #include<cstdio> #include< ...
- 86标准SQL与92标准SQL用法区别
86标准SQL与92标准SQL用法区别 在开发Oracle 9i时, 数据库还时间了ANSL SQL/92标准的链接语法, 在书中建议在使用Oracle 9i及更高版本时,应该使用SQL/92标准的语 ...
- Codeforces Round #459 (Div. 2)The Monster[匹配问题]
题意 给一个序列,包含(,),?,?可以被当做(或者),问你这个序列有多少合法的子序列. 分析 n^2枚举每一个子序列,暂时将每个?都当做右括号,在枚举右端点的时候同时记录两个信息:当前左括号多余多少 ...
- 汇总:unity中弹道计算和击中移动目标计算方法
http://download.jikexueyuan.com/detail/id/432.html 弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺复杂的 ...
- IT兄弟连 JavaWeb教程 AJAX常见问题
1 中文乱码问题 ● POST提交乱码 乱码原因:所有浏览器对Ajax请求参数都使用UTF-8进行编码,而服务器默认使用ISO-8859-1去解码,所以产生乱码. 解决方法:在服务器接收请求参数前 ...
- 解决Idea项目启动报错:程序包javax.servlet.http不存在
报错信息 在没有使用maven的时候,web项目从远程仓库获取下以后,起一次启动往往会报错javax.servlet.http程序包找不到,随之而来的java基础包都将不能使用,报错信息如下: 解决方 ...