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. POCO库中文编程参考指南(11)如何使用Reactor框架?

    1 Reactor 框架概述 POCO 中的 Reactor 框架是基于 Reactor 设计模式进行设计的.其中由 Handler 将某 Socket 产生的事件,发送到指定的对象的方法上,作为回调 ...

  2. APNS消息推送实现

    转自:http://blog.csdn.net/biaobiaoqi/article/details/8058503 一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1 ...

  3. shuts down an ExecutorService

    shuts down an ExecutorService in two phases, first by calling shutdown to reject incoming tasks, and ...

  4. sqlServer对内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  5. IOS推流 搭建环境

    效果图 iTools有点卡, 但是推到服务器倒是很快的. 推流 前言 这篇blog是iOS视频直播初窥:<喵播APP>的一个补充. 因为之前传到github上的项目中没有集成视频的推流.有 ...

  6. c# link 学习网站

    http://www.cnblogs.com/shanyou/p/4353433.html

  7. php学习笔记-PHP中的几个取整函数

    floor是向下取整,比如4.5,它是在4和5之间的一个数,那么结果就是4. ceil是向上取整,比如3.7,它是在3和4之间的一个数,那么结果就是4. round是对一个数四舍五入,小数部分如果小于 ...

  8. linux命令配置IP详解

    在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,有时需要编辑这些文件来完成联网工作. vi /etc/sysconfig/network-scripts/ifcfg-eth0 :进 ...

  9. Key and Certificate Conversion

    Key and Certificate Conversion Private keys and certificates can be stored in a variety of formats, ...

  10. JVM内存GC的骗局

    此文已由作者尧飘海授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 概述 在日常程序开发中,很多JAVA程度员不太关心内存的使用情况.当然,如果程序员运气较好或者系统没有大规模 ...