爬虫

爬虫--[HttpClient]

心不动则不痛 提交于 2021-02-13 20:24:41
爬虫技术可以获取互联网上开放的网页文档或其他文档,在java中HttpClient是比较好用的模拟请求和爬虫组件 下面看一个简单的职位爬去的实例: 1 下载HttpClient 最新HttpClient版本是4.x,我们可以去官网下载,本章所用版本为:commons-httpclient-3.0.1.jar 这是它的核心包,但是要编写一个完整的爬虫应用,它还需要依赖如下: 2 使用HttpClient进行模拟请求 2.1 创建HttpClient对象: HttpClient httpClient=new HttpClient(); 2.2 通过get或post方式请求页面: GetMethod getMethod=new GetMethod("http://www.51job.com"); 假如是post请求,那么就得使用: PostMethod postMethod=new PostMethod("http://www.51job.com"); 2.3 执行请求: httpClient.executeMethod(getMethod); 2.4 得到返回的网页: String html= getMethod.getResponseBodyAsString(); 假如网页非常大时,需要使用: getMethod.getResponseBodyAsStream();

【最新更新支持频道分页、文章分页】【抛砖引玉】抓取OSC的问答数据展现垂直爬虫的能力

拈花ヽ惹草 提交于 2020-05-08 04:22:28
更新提示(2013-03-13):最新版本更新: 支持定向抓取某频道 <!-- | name:目标名称 --> <target name="travel" isForceUseXmlParser="1"> <!-- | 限制目标URL的来源为网易旅游子频道,在spiderman里面把频道页叫做"来源url" --> <sourceRules policy="and"> <rule type="regex" value="http://travel\.163\.com/special/cjgat(_\d+)?/"> <!-- | 定义如何在来源页面上挖掘新的 URL --> <digUrls> <field name="source_url" isArray="1"> <parsers> <parser xpath="//div[@class='list-page']//a[@href]" attribute="href"/> </parsers> </field> <!-- | 在spiderman里面把详细文章页叫做"目标url" --> <field name="target_url" isArray="1"> <parsers> <parser xpath="//div[@class='list-item clearfix']//div[@class='item-top']/

Spiderman Java开源垂直爬虫抓取示例【需求小复杂】

强颜欢笑 提交于 2020-05-08 04:22:08
首先要说明的是,本文仅介绍了Spiderman解析 XML 的示例,Spiderman解析 HTML 也是差不多的原理,不过更考验“爬虫”的能力。 这个以后再发篇文章详细说明 【 已经有了请点击这里 】:) 在Github的spiderman-sample项目里面有好几个案例,可以跑跑看。 这是Spiderman链接: http://www.oschina.net/p/spiderman 1.Spiderman是一个垂直领域的爬虫,可用于抓取特定目标网页的内容,并且解析为所需要的业务数据,整个过程追求无需任何编码就能实现,这样带来的好处是部署简单,并且网页内容变化可以灵活应对。 2.本文演示所抓取的目标URL是: http://www.alldealsasia.com/feeds/xml 这是一个XML文件,提供了该网站所有活动的Deal 3.怎么用Git+Maven搭建Spiderman使用这里就不详细说明了 4.直接看效果 这是目标网页【一个xml页面】 为了完成以上的目标,需要配置一个xml文件让Spiderman根据目标执行 最后来看看抓取之后的结果数据,我是在回调方法里面写入文件的: // 初始化蜘蛛 Spiderman.init(new SpiderListener() { public void onNewUrls(Thread thread, Task task,

有哪些网站用爬虫爬取能得到很有价值的数据(转)

浪子不回头ぞ 提交于 2020-05-05 00:29:23
想做数据,首先从获取数据开始。但是对于需要获取什么数据,数据可以干什么,很多人还是一头雾水,知乎达人林骏翔给出了参考。本文来林骏翔在知乎的回答,已获授权,转载请联系林骏翔。 一大波数据来袭!题主问了有什么网站,能用来做什么。我给出几个API网站吧,做APP用的可能比较多,不过也可以用在日常生活中。 一、生活服务 手机话费充值。 天气查询。 快递查询。 健康食谱。 查医院。 水电煤缴费。 电影大全。 谜语、歇后语、脑筋急转弯。 音乐搜索。 健康知识。 百度糯米、团购等信息。 彩票开奖 以上接口都来自网站: http://www.apix.cn/services/category 细心的人会发现,这些功能简直是遍地都是啊,支付宝、微信什么的一大堆,哪用那么麻烦!是的,但我相信这些可能为一些不太了解相关信息的人提供了帮助。不过,虽然这些功能很多APP都有,如果自己有空闲时间又懂得编程,不喜欢别人的UI设计,自己做一做也是挺好玩的。比如:生活枯燥了,把这些谜语歇后语等根据个人喜好定时推送到自己的手机,放松身心;把一些健康小知识在空闲时间推送给自己,提醒自己…… 国内类似的网站还有: API数据接口_开发者数据定制https://www.juhe.cn/ API Store_为开发者提供最全面的API服务http://apistore.baidu.com/ API数据接口_免费数据调用

【转】用node.js爬取网站图片并保存

故事扮演 提交于 2020-05-02 17:20:35
原文: http://www.jianshu.com/p/177ca8aaf6fb 昨天是传说中的程序员节,虽然我对于这个并无感,但还是来搞点事吧,写一个最简单的爬虫,抓取图片并保存在本地,如下,我们抓取的是 http://www.ivsky.com/ 这个网址的图片。 用到的模块:cheerio(一个在服务端操作DOM的模块)、fs(文件模块)、http 代码如下: var http = require("http"); var fs = require("fs"); var cheerio = require("cheerio"); var url = "http://www.ivsky.com/"; function download ( url,callback ) { http.get( url,function(res){ var data = ""; res.on("data",function(chunk){ data += chunk; }); res.on("end",function(){ callback(data) }) }).on("error",function(err){ console.log(err) }) } download( url,function( data ) { if(data){ var $=cheerio.load(data);

python-34:极视界爬虫总结

夙愿已清 提交于 2020-04-27 02:59:19
我们的第二个例子到这里也要结束了,相对于第一个来说,这个实例更加深入,涉及到了更多的模块和方法,但是通过一步步的实践下来,你会发现这其实不难,因为我们有很多的网上的资源,你只要知道你想要做什么,你不清楚什么然后一个一个的去查就行了,这是一种获取知识的方法,方法远比知识重要,我希望大家能在拿到一个实例,一道题目,一个项目或者遇到什么问题之前,先想清楚,把大的问题分成一个个小的问题,然后解决小问题,最后再汇总成大问题的解决方案 好了,来看看我们第二个实例用到了什么新的知识 1. 为了创建保存图片的文件夹,我们引入了 os 模块 os 模块能让我们使用计算机系统中的一些命令 2. 为了实现图片下载的功能,我们引入了 urllib 模块 跟 urllib2 一样,urllib 是 python 自带的一个模块,它能被调用来实现某些功能 既然讲到这里,那我们就来说说 python 中的模块 模块是 python 中的一个很重要的概念,如果感兴趣的话,可以去查看 python 的官方文档: http://python.usyiyi.cn/python_278/tutorial/index.html 这里顺便推荐一些我使用的书籍和网站,书籍会放到网盘中并且不断更新 1. python 中文官方文档库: http://python.usyiyi.cn/ 1. python 中文官方教程: http

Python网页爬虫学习

强颜欢笑 提交于 2020-04-14 02:56:58
【今日推荐】:为什么一到面试就懵逼!>>> 我总结的了ython网页爬虫的笔记,使用BeautifulSoup和requests两个模块实现,能够爬取百度贴吧帖子图片的功能。里面还包括的了两个模块具体的使用讲解,还包含了详细的注释。有问题请在GIT留言或者邮箱联系 可以直接去Github下载: 下载地址: https://github.com/liangz0707/WebCrawler git地址:git@github.com:liangz0707/WebCrawler.git 来源: oschina 链接: https://my.oschina.net/u/146773/blog/508263

python-59: 基础篇完

萝らか妹 提交于 2020-04-12 17:40:42
经历了这漫长的时间,我们的基础篇终于讲完了,来说几个问题 1. 基础篇主要讲了什么 基础篇我们主要是使用urllib,urllib2和cookielib这几个库来讲解爬虫的几个实例,为什么要选择这几个库呢?因为这是python自带的库函数,我在学习的时候觉得它不是很好用,同样的功能,使用其他的库函数的话过程会简单很多,但是,这个库能让我们很好的理解爬虫的一些过程,了解一些基本的原理,而这些知识在后面更深入的学习中是很重要的,所以我选择了这几个库来进行学习 我们的基础篇从python的基础知识开始,然后了解爬虫的基本知识,学习最简单的爬虫程序,然后开始进入到四个实例的讲解,首先是访问网页获取一些我们想要的信息,然后将喜欢的信息下载到本地,后来发现很多的网站是需要登录才能进行爬取的,所以我们又学习了怎么模拟登录,模拟登录之后,又加上了对验证码机制的处理方法,整个过程是循序渐进的,很庆幸最终能将它们写完 2. 学完基础篇我们能干什么 学完基础篇觉得也不是很难,所以可能会有疑问,学完基础篇我们能干什么? 首先要明确一个概念,爬虫可以做什么,你可能说爬虫可以爬取网页,可以帮我们登录网站,但是我们做的这一切事情最终都是一个目的:获取数据。数据这个概念是近几年提出来而且也越来越火的一个概念,我虽然没接触过什么大数据,但是我也有自己想得到的数据,比如我喜欢看漫画,但是我不能总是在网页上看

社会化海量数据采集爬虫框架搭建

十年热恋 提交于 2020-04-12 11:53:41
随着BIG DATA大数据概念逐渐升温,如何搭建一个能够采集海量数据的架构体系摆在大家眼前。如何能够做到所见即所得的无阻拦式采集、如何快速把不规则页面结构化并存储、如何满足越来越多的数据采集还要在有限时间内采集。这篇文章结合我们自身项目经验谈一下。 我们来看一下作为人是怎么获取网页数据的呢? 1、打开浏览器,输入网址url访问页面内容。 2、复制页面内容的标题、作者、内容。 3、存储到文本文件或者excel。 从技术角度来说整个过程主要为 网络访问、扣取结构化数据、存储。我们看一下用java程序如何来实现这一过程。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import java.io.IOException ; import org.apache.commons.httpclient.HttpClient ; import org.apache.commons.httpclient.HttpException ; import org.apache.commons.httpclient.HttpStatus ; import org.apache.commons.httpclient.methods.GetMethod ; import org

python-55: 验证码的生成机制

我是研究僧i 提交于 2020-04-07 08:47:15
前面的尝试失败了,为什么呢? 大家可以看到,我们使用了两次urlopen,第一次是打开登陆界面的网址获取验证码的地址,第二次是post数据到指定的网址,我们虽然获取到了验证码,但是这其实是一个很虚的事情,为什么这么说呢? 还是先看前面说的两个网址, http://id.ifeng.com/allsite/login  这是登陆界面的网址,用来显示输入界面和接受登陆结果的信息 https://id.ifeng.com/api/sitelogin  这是post数据的网址,js脚本,用来向服务器发送数据 我们从登陆界面获取验证码图片,然后向post数据的网址发送data,那么,我们怎么能确定这个过程中验证码有没有改变呢?我们的程序只进行了获取验证码,输入验证吗,post的操作,但是实际上,这中间具体经过了什么样的一个过程我们并不知道,有可能我们第二次使用urlopen来post数据的时候,这个验证码已经改变了呢?如果真的是这样,那我们的代码获取的永远不是最新的验证码,这怎么可能登陆得上呢? 那么,应该怎么知道获取的验证码是不是最新的,或者,有没有什么方法能够保证post数据里面的验证码跟我们网页获取到的是同一个验证码,但同时,我还发现了一个问题 https://id.ifeng.com/public/authcode  这个是我们前面使用RE抽取出来的验证码的图片