您的位置:首页 > 编程语言 > Python开发

配置定时启动python 脚本

2015-12-18 11:37 323 查看
最近测试过程中需要造一些数据,又要实时更新。所以写了一个python小爬一下数据。爬虫网上很多,初略学习了一下,有点小心得,做个笔记记一下。刚开始的时候跟朋友导论了一下爬下来的数据怎么样处理,导论下来的实践方式大概有两种:1、把数据读取下来后直接存入数据库,不需要消耗服务端的资源,2、服务器加一个接口在每次爬到数据后,就往数据库里存。第二种方法虽然消耗了服务器资源,但是这样可以减少操作数据库的风险,而且可以在半夜的时候再执行,这样可以大大的提高cpu的使用。

虽然不再直接往数据库中存储了,但是觉得还是可以记下来。

(1)爬虫当然需要链接网址,一般链接网址方法:

打开一般的网址可以使用:urllib2中的urlopen(url);这样就会getrequest 网址源码了,但是很多网址都要有个headers;所以还需要在打开前加个一个头部,这样整体的网址请求就出来了:

url = http://www.xxxx.html
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

headers = { 'User-Agent' : user_agent }

request = urllib2.Request(url,headers = headers)

response = urllib2.urlopen(request)


response 获取到了整个网站的源码信息。因为本地python默认编码为:uft-8。

所以一般要做这样的处理:response= response.read().decode('utf-8')

respone获取到数据后,下来就是筛选了,那就是使用python正则,如: pattern = re.compile('<p><a.*?target=(.*?)>(.*?)</a></p>',re.S)

引号中的为匹配的内容,这里要注意::一定要两个()或是两个以上,不知道什么原因,不然后面使用到组数时一直报越界。

然后使用findall匹配源码。getneed=re.findall(pattern,response);再使用for循环就可以把获取到的内容print或存起来了。

如存入i[]中:

for i in getneed:

print i[0],i[1]

i[0]表示每次匹配到的第一个()中的内容,每次匹配到存起来就可以了;(i[1]同理)

(2)将存到数据库中。

首先需要安装数据库的python驱动,我是使用mysql的,这个再官网上可以下载到。安装好后,链接数据库就可以操作数据库了。

import mysql.connector as dbu 注意import的是mysql包中的connector。

conn=dbu.Connect(host="localhost", user="root", passwd="",db='test')

cmd=conn.cursor()

cmd.execute(cmdbk)

把(1)中获取的数据添加到cmdbdk中就好了。

(3)调接口,通过接口来将数据存入数据库;

直接记下代码需要注意的东西吧。

data = {'xx':getcontent,'yy':getorg} 发送数据的格式

data_urlencode = urllib.urlencode(data)

requrl = "http:///putData" 接口地址

req = urllib2.Request(url = requrl,data =data_urlencode)

print req 请求后返回内容

res_data = urllib2.urlopen(req)

res = res_data.read()

print res 响应

很晚了,睡觉啦,小记一下~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: