使用webpasser抓取某笑话网站整站内容

使用webpasser框架抓取某一笑话网站整站内容。webpasser是一款可配置的爬虫框架,内置页面解析引擎,可快速配置出一个爬虫任务。配置方式将页面解析和数据存储分离,如果目标网站改版,也可以快速修复。

配置说明如下(该例子完整配置见http://git.oschina.net/passer/webpasser):

1.先写总的抓取参数:网页编码是gbk,请求超时时间是5秒,请求失败重试5次,抓取失败后等待时间10秒,设置10个线程抓取,每次抓取后不等待。这里不设置请求头信息、cookie,代理了。

<fetchConfig charset="gbk" timeOutSecond="5" errorRetry="5" errorDelayTime="10" runThreadNum="10"  fetchPrepareDelayTime="0" >
		    <userAgent>Mozilla/5.0 (compatible; webpasser;)</userAgent>
			<headers>
				<!-- <header name="Referer" value="http://www.jokeji.cn" /> -->
			</headers>
			<!-- HTTP Cookie -->
			<cookies>
			<!--   <cookie  name="cookie1" value="" host="" path=""/>
		           <cookie name="cookie2" value="1"  /> -->
			</cookies>
			<!-- 代理设置: 从ip.txt中批量获读取ip,每次抓取随机使用某个ip -->
			<!-- <proxies path="ip.txt"></proxies> -->
			<!-- 单个代理获取 ,pollUrl的系统链接中需随机返回一个代理ip,格式是  ip:port
			     (当使用proxy标签时proxies失效)
			-->
		<!-- 	<proxy pollUrl="http://localhost:8083/proxyManage/pollProxyIp.action?task=xunbo" ></proxy>
	 -->
	</fetchConfig>

2.scope表示限制抓取的链接域名范围(注意limitHost里一定要是域名,不能在前后加http或/),seeds表示从这些seed为入口开始抓取。

	<scope>
		<limitHost value="www.jokeji.cn" />

	</scope> 

	<!-- 种子 -->
	<seeds>
		<seed url="http://www.jokeji.cn/" />
	</seeds>

3.如果网页的链接格式符合scope的规则,则进入这个page的解析策略。digLink是用来从一个网页中挖取新的链接。用jsoup语法指定从所有的a标签挖取新链接。由于新链接是相对链接,用relativeToFullUrl处理链将相对链接转为绝对链接。

	<page>
		<scope>
		   <rule type="regex" value="http://www.jokeji.cn(.*)" />
		</scope>
		<!-- 链接挖取 -->
	     <digLink  >
	          <rules>
					<rule type="jsoup" value="a[^href]" attr="href"  />
						 <rule type="relativeToFullUrl"  />
				</rules>
	     </digLink>

	</page>

4.抽取详情页中想要的具体业务数据,经过下面解析后返回指定的map数据。

(1)获取标题数据:通过jsoup语法(jquery选择器)获得title标签中的内容;由于title内容中"_"后面的内容不需要,通过“cut”便签(截取处理链)将“_”后面的内容去除。

(2)获取文章内容的数据:通过jsoup语法(jquery选择器)获得id为text110的标签里的内容。

	<!-- 解析具体的业务数据,处理后是一个map
	  -->
	<page>
		<scope>
		   <rule type="regex" value="http://www.jokeji.cn/jokehtml/(.*).htm" />
		</scope>
		<field name="title" >
			 <!-- 提取某个字段数据的处理链  -->
			<rules>
	   			 	 <rule type="jsoup" value="title" exp="html()" />
	   			  <rule type="cut" >
				     <pre></pre>
				     <end>_</end>
				  </rule>
			</rules>
		</field>
		<field name="content" >
			 <rules>
			<rule type="jsoup" value="#text110"  />
			</rules>
		</field>
	</page>

5.解析好的数据持久化配置(存储步骤4中的数据):target为handleResultMapInterface是固定值,表示是持久化的类,classPath是具体的实现类。com.hxt.webpasser.persistent.impl.DiskJsonHandleResult是存储到硬盘的实现类demo,该类属性有rootDir(保存到哪个文件夹)、charSet(存储时的编码),详见该类。可自定义编写持久化类,继承HandleResultMapInterface接口,有些属性用配置传入。(建议持久化是另外一个独立项目提供数据存储的http接口,爬虫请求该接口将数据push进去,这样分离维护比较方便,例com.hxt.webpasser.persistent.impl.VideoPushServcieImpl)

	 <!-- 抓取解析后的数据持久化 -->
	  <resultHandler target="handleResultMapInterface" classPath="com.hxt.webpasser.persistent.impl.DiskJsonHandleResult">
	 			<property name="rootDir" value="downdir/path/jokeji" ></property>
	 			<property name="charSet" value="gbk" ></property>
	 </resultHandler>
	 

6.配置写好后就可以加入任务,启动测试了。建议可以单个测试下。

原文地址:https://www.cnblogs.com/golook/p/9495440.html

时间: 2024-10-12 08:19:38

使用webpasser抓取某笑话网站整站内容的相关文章

301跳转:IIS服务器网站整站301永久重定向设置方法(阿里云)

欢迎来到重庆SEO俱乐部:搜索引擎优化学习交流QQ群224306761. 承接:seo优化.网站建设.论坛搭建.博客制作.全网营销 博主可接:百度百家.今日头条.一点资讯等软文发布,有需要请联系PE! 点击与站长互动 301跳转:IIS服务器网站整站301永久重定向设置方法(阿里云) 首页 > 主机 > 正文 Panoeade / 2016-04-24 / 1975 views / 0 Replies / 悦读模式 / 百度已收录 欢迎投稿SEO/SEM及互联网相关文章:百度百家.今日头条.一

【Android 我的博客APP】1.抓取博客首页文章列表内容——网页数据抓取

打算做个自己在博客园的博客APP,首先要能访问首页获取数据获取首页的文章列表,第一步抓取博客首页文章列表内容的功能已实现,在小米2S上的效果图如下: 思路是:通过编写的工具类访问网页,获取页面源代码,通过正则表达式得到匹配的数据进行处理显示到ListView上 简单说明下要点:1. 使用Apache HttpClient库实现GET请求.2. 异步请求处理.3. 正则表达式抓取自己需要的数据. 使用Apache HttpClient库实现GET请求. 使用Apache只需简单三步 HttpCli

[Python爬虫] 之二十六:Selenium +phantomjs 利用 pyquery抓取智能电视网站图片信息

一.介绍 本例子用Selenium +phantomjs爬取智能电视网站(http://www.tvhome.com/news/)的资讯信息,输入给定关键字抓取图片信息. 给定关键字:数字:融合:电视 二.网站信息 三.数据抓取 针对上面的网站信息,来进行抓取 1.首先抓取信息列表 抓取代码:Elements = doc('div[class="main_left fl"]').find('div[class="content"]').find('ul').find

抓取大众点评网站数据

使用PHP单线程抓取,速度比较慢,可以抓取所有的团购信息:店铺信息也可以抓取: 公司测试产品需要使用一些数据,所有试着抓取的,感觉就是写正则,不指定别人是怎么样的实现思路,感觉使用php多线程应该会速度更好吧. 我主要是抓评论跟一些图片,但是其他思路基本一样.按理来说,只要能显示出到网页上的,都可以抓下来. 我抓取的思路是第一步获取所有的city信息即test_get_city_info: 第二部通过city的url抓取每个city的每个类别的商品团购信息test_get_web_info 第三

零授权 抓取新浪微博任何用户的微博内容

一.微博API 使用微博API获取数据是最简单方便,同时数据完整性高的方式,缺点是微博开发平台对于API的调用次数做了严格的限制.具体使用过程参考http://open.weibo.com/,有详细的教程,对于API次数的限制,我们是通过注册多个开发者账号来绕过,对于某个IP调用API次数的限制,暂时没办法解决.微博API是通过httpclient发起请求,返回json形式的数据.对于数据重复获取方面,也有专门的接口通过参数控制获取增量数据.优点:简单,数据完整性高,增量简单.缺点:API次数有

使用php蓝天采集器抓取今日头条ajax的文章内容

今日头条的数据都是ajax加载显示的,按照正常的url是抓取不到数据的,需要分析出加载出址,我们以 https://www.toutiao.com/search/?keyword=%E6%96%B0%E9%97%BB 为例来采集列表的文章 用谷歌浏览器打开链接,右键点击"审查"在控制台切换至network并点击XHR,这样就可以过滤图片.文件等等不必要的请求只看页面内容的请求 由于页面是ajax加载的,所以将页面拉至最底部,会自动加载出更多文章,这时候控制台抓取到的链接就是我们真正需要

python+rabbitMQ抓取某婚恋网站用户数据

"总是向你索取却不曾说谢谢你----",在博客园和知乎上面吸收了很多知识,以后也会在这里成长,这里挺好,谢谢博客园和知乎,所以今天也把自己在项目期间做的东西分享一下,希望对朋友们有所帮助.... 废话少说,let's go----! 需求: 项目需要做一个婚恋网站,主要技术有nginx,服务器集群,redis缓存,mysql主从复制,amoeba读写分离等等,我主要用rabbitMQ+python完成并实现了数据爬取工作(数据库写入及图片下载保存),速度的话公司的电脑爬的(i5+16g

爬取小说网站整站小说内容 -《狗嗨默示录》-

# !/usr/bin/env python # -*- coding: utf-8 -*- import urllib.request import re import MySQLdb import socket domain = 'http://www.quanshuwang.com' headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Ch

au3抓取不得姐网站

网站地址:http://www.budejie.com/text/ 用的正则有些别扭,见笑. 代码: #include <IE.au3> #include <File.au3> #include <String.au3> #include <Array.au3> #include <Debug.au3> #include <Date.au3> ;code try to collect budejie stories of www.bu