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进行爬虫(一)的更多相关文章

  1. Python之Selenium的爬虫用法

    Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手).也就是说 Sel ...

  2. 【爬虫】如何用python+selenium网页爬虫

    一.前提 爬虫网页(只是演示,切勿频繁请求):https://www.kaola.com/ 需要的知识:Python,selenium 库,PyQuery 参考网站:https://selenium- ...

  3. 第14.15节 爬虫实战1:使用Python和selenium实现csdn博文点赞

    写在前面:本文仅供参考学习,请勿用作它途,禁止转载! 在开始学爬虫时,学习了csdn博客专家(id:明天依旧可好 | 柯尊柏)<实战项目二:实现CSDN自动点赞>的文章,文章介绍了通过Py ...

  4. 【Python】 Selenium 模拟浏览器 寻路

    selenium 最开始我碰到SE,是上学期期末,我们那个商务小组做田野调查时发的问卷的事情.当时在问卷星上发了个问卷,但是当时我对另外几个组员的做法颇有微词,又恰好开始学一些软件知识了,就想恶作剧( ...

  5. Python 配置 selenium 模拟浏览器环境,带下载链接

    使用浏览器渲染引擎.直接用浏览器在显示网页时解析HTML,应用CSS样式并执行JavaScript的语句. 这方法在爬虫过程中会打开一个浏览器,加载该网页,自动操作浏览器浏览各个网页,顺便把数据抓下来 ...

  6. selenium+phantomJS爬虫,适用于登陆限制强,点触验证码等一些场景

    selenium是非常出名的自己主动化測试工具,多数场景是測试project师用来做自己主动化測试,可是相同selenium能够作为基本上模拟浏览器的工具,去爬取一些基于http request不能或 ...

  7. selenium在爬虫领域的初涉(自动打开网站爬取信息)

    selenium简介 Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.这个工具的主要功能包括:测试与浏览器的兼容性--测试你的应 ...

  8. 安装python的selenium库和驱动

    对于使用selenium来进行python爬虫操作可以简化好多操作,它实际上的运行就是通过打开一个浏览器来一步一步的按照你的代码来执行 如果安装过python编译器后应该pip工具也是有的,验证pyt ...

  9. Python初学者之网络爬虫(二)

    声明:本文内容和涉及到的代码仅限于个人学习,任何人不得作为商业用途.转载请附上此文章地址 本篇文章Python初学者之网络爬虫的继续,最新代码已提交到https://github.com/octans ...

随机推荐

  1. 洛谷P1352——动规

    题目:https://www.luogu.org/problemnew/show/P1352 代码如下: #include<iostream> #include<cstdio> ...

  2. POI 中的CellType类型以及值的对应关系

    操作使用POI接口,了解CellType的类型和值的对应关系. CellType 类型 值 CELL_TYPE_NUMERIC 数值型 0 CELL_TYPE_STRING 字符串型 1 CELL_T ...

  3. POJ-3616

    Milking Time Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10434   Accepted: 4378 Des ...

  4. 读取web应用下的资源文件(例如properties)

    package gz.itcast.b_resource; import java.io.IOException; import java.io.InputStream; import java.ut ...

  5. RPC原理与实践(一)----RPC原理与实现(Thrift版)

    什么是RPC?为什么要使用RPC? 首先什么是RPC,RPC全称Remote Process Call,远程过程调用,现在几乎所有的公司都在使用RPC这种架构,诸如YOUTUBE使用的Thrift,B ...

  6. js.alert(重写)

    function dialogFn(Msg, btnOkCallBack, btnCancelCallBack) { $("body").append('<div id=&q ...

  7. org.apache.commons.httpclient.HttpClient的使用(转)

    HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 java net包中已经提供了访 ...

  8. 3dmax切割平行线

    1 选择物体(可编辑多边形),选择边 ,然后点击切片平面 2 然后会出现黄色线框 3 移动旋转黄色线框到合适位置,然后点切片 4 结果

  9. iphone6 iphone6 plus 放大显示模式高分辨率模式问题

    分为兼容模式和高分辨率模式. 兼容模式 当你的 app 没有提供 3x 的 LaunchImage 时,系统默认进入兼容模式,大屏幕一切按照 320 宽度渲染,屏幕宽度返回 320:然后等比例拉伸到大 ...

  10. elasticsearc 参考资料

    _source 和store http://stackoverflow.com/questions/18833899/in-elasticsearch-what-happens-if-i-set-st ...