基于lua网络爬虫_ouloba_cs的博客-程序员宝宝_lua 爬虫

技术标签: 网络爬虫  web  lua  

依赖

https://gitee.com/EventServer

lua-htmlparser

 

--定义数据

SpiderWebs={}

SpiderWebs[1]={url='https://www.oschina.net', selector='a.news-link', content='div.content'}



--采集URL

--'https://www.oschina.net'

--'a.news-link'

--'div.content'

function SpiderProc(url, selector, contentname)

	local htmlparser = require('htmlparser')

	local ret,text = ExecuteURL(math.random(1,10), url, true)

	local root = htmlparser.parse(text,10000)

	print(" chapters")

	local sel, chapters = root(selector), {}



	for k,v in pairs(sel) do

		local href = v.attributes['href']		

		if not SpiderUrl[href]  then			

		

			local title = v.attributes['title']

			--print(k,v.name, href)	

			local ret,resp = ExecuteURL(math.random(1,10), href, true)

			local root = htmlparser.parse(resp,10000)

			local curr=root(contentname)

			local doc =curr[1]:getcontent()

			local content = string.gsub(doc,'(<[^>]+>)', '')			

			content =  string.gsub(content,'([ ]+)', '')						

			--content = string.sub(content, e, #content)

			local desc=utf8sub(content, 1,200)

			

			local id = UuidsDocMgr:NewID()

			local value = {

				id,

				ADMIN_USERID,

				GetNowDateString(os.time()),

				escape_square_brackets(title),

				escape_square_brackets(desc),

				escape_square_brackets(doc),

				0,

				'Reprint',

				href,

			}

			

			local sql = [[

			INSERT INTO `blogs`.`documents`

			(`id`,

			`post_author`,

			`post_date`,

			`post_title`,

			`post_desc`,

			`post_content`,	

			`post_status`,

			`category`,

			`fromurl`)

			VALUES

			(]].. table.concat(table2code(value), ',')..[[);

			]]

			local ret,rows=ExecuteSQL(THREADID_SQL+math.mod(id, 10), sql)	

			SpiderUrl[href]=true 

		end

	end

end



--1小时采集1次

HelperSetMinuteTimer(1*60*60*1000, function(thread)		

	if not SpiderUrl then

		SpiderUrl={}

		local sql = [[select fromurl from blogs.documents where fromurl<>'';]]

		local ret,rows=ExecuteSQL(THREADID_SQL+math.mod(1, 10), sql, true)	

		for i=1,#rows,1 do

			SpiderUrl[rows[i].fromurl]=true

			print('***********************SpiderUrl***************', rows[i].fromurl)

		end		

	end

	

	if not ADMIN_USERID then

		local sql = [[select userid from blogs.accounts where account=']]..ADMIN_MAIL..[[';]]

		local ret,rows=ExecuteSQL(THREADID_SQL+math.mod(1, 10), sql, true)	

		ADMIN_USERID=rows[1].userid		

	end



	for i=1,#SpiderWebs,1 do

		local web = SpiderWebs[i]

		SpiderProc(web.url, web.selector, web.content)

	end



end, 1000)

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ouloba_cs/article/details/102176789

智能推荐

SQL Fundamentals: Using Single-Row Functions to Customize Output使用单行函数自定义输出_weixin_30439067的博客-程序员宝宝

SQL Fundamentals || Oracle SQL语言DUAL is a public table that you can use to view results from functions and calculations.The DUAL table is owned by the user SYS and can be accessed by all user...

softreference weakreference 学习总结_一身诗意千寻瀑的博客-程序员宝宝_softreference weakreference

package cm;import java.lang.ref.SoftReference;import java.lang.ref.WeakReference;import java.util.WeakHashMap;import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;public class test201804010 {...

linux常见问题(系统篇)_crabapple2的博客-程序员宝宝

0001 修改主机名 vi /etc/sysconfig/network,修改HOSTNAME一行为HOSTNAME=主机名,重启后也能生效 0002 Ret Hat Linux启动到文字界面(不启动xwindow) 将/etc/inittab中 id:5:initdefault: 一行中的5改为3 0003 redhat的自动升级更新问题(hutuworm) 在www.redhat.com/co

趣头条基于ClickHouse玩转每天1000亿数据量_jeanron100的博客-程序员宝宝

本文根据dbaplus社群第199期线上分享整理而成,文末还有直播回放~王海胜趣头条数据中心大数据开发工程师8年互联网工作经验,曾在eBay、唯品会、趣头条等公司从事大数据开发相关工作,...

MSS以及MTU,iOS丢包分析_ruitaocc的博客-程序员宝宝_ios mtu

[背景知识] MTU: Maxitum Transmission Unit 最大传输单元 MSS: Maxitum Segment Size 最大分段大小(偶是直译,翻译的不好,不要打 俺PP) PPPoE: PPP Over Ethernet(在以太网上承载PPP协议) [分析过程] 先说说这MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系

http://www.cnblogs.com/wangkewei/archive/2009/05/20/1472629.html_kafeiwuzhuren的博客-程序员宝宝

 http://www.cnblogs.com/wangkewei/archive/2009/05/20/1472629.html

随便推点

Linux下openoffice+swftools安装教程_G_Smaller的博客-程序员宝宝

一.安装openoffice第一步安装openoffice 安装最新的openoffice 需要最新的系统,redhadserver5.5不行,因为里面GLIBC最高是2.5的,最新的openoffice需要GLIBC_2.11。所以openoffice安装到了线上的CentOS 6.3上面。1:下载最新的 openoffice地址:http://jaist.dl.sourceforge.ne

小型微型计算机系统杂志好投么,小型微型计算机系统杂志_weixin_39747755的博客-程序员宝宝

小型微型计算机系统杂志期刊简介《小型微型计算机系统杂志》创刊于1980年,由中国科学院沈阳计算技术研究所主办,是国内外公开发行的计算机类学术性刊物。本刊为月刊,主编:林浒。国内统一刊号:CN21-1106/TP,国际刊号:ISSN1000-1220。《小型微型计算机系统杂志》获奖情况:中国自然科学核心期刊,中国科学引文数据库来源期刊,中科院优秀科技期刊三等奖(96)。《小型微型计算机系统杂志》被以...

在伟大中国,微积分下放中学不是梦!_yuanmeng001的博客-程序员宝宝

2018年1月16日,国家教育部宣布:在全日制普通高中数学课程标准中,首次引入微积分的教学科目,情况如下:新版本数学课程标准首次提出学分与选课的教学方式: 必修课程的学分由旧版本的10学分变为新版本的8学分,添加选择性必修课程6学分,选修课程6学分。 新版本对选修课程的分类、内容及学分做了具体阐述如下: A类课程包括微积分、空间向量与代数、概率与统计三个专题,其中微积分2.5学分,空间向量与代数2

Python Exception处理_胖蔡的博客-程序员宝宝_python重写exception方法

Python中的错误处理分为两类:语法错误和异常处理。语法错误一般是指由于python语句、表达式、函数等存在书写格式活语法规则上的错误抛出的异常,如python常见的缩进控制,若同层次的执行语句存在缩进不同,会报语法错误(SyntaxError),一般在ide中会有明显的提示,其属于编译阶段的错误,一般是导致解析错误抛出错误;异常处理一般是指python语法格式正确,但在运行过程出现错误,错误类型

什么是软件设计中的上游和下游?_不穿铠甲的穿山甲的博客-程序员宝宝_服务上游和下游怎么区分

文章目录前言总结河流理论组件服务终点理论总结收尾前言在我们日常工作当中,经常会听到这些词汇,与上游xx对接、升级要保证下游xx兼容性,据我了解啊,很多人还搞不起什么是上游、什么是下游,或者脑袋里很模糊,不会去判断这些。那么搞清楚这些概念,对于我们的软件设计还是很有必要的,为了搞清楚,那么下面我先举几个例子来介绍下:例如:我们的上游的xx系统今天down掉了,导致我们一部分业务没有闭环,需要晚些时候去补偿。我们提供的接口被调用频率过高,爆掉了,导致下游的几个厂商业务阻断1小时。

推荐文章

热门文章

相关标签