用Python定时爬取网站最新资源
记录一下。
写做个网站,爬了另一个网站的内容来做自己网站的内容。
把脚本挂到服务器,每隔一个小时去爬一次资源,然后保存到一个HTML文件里。
用flask做web对接,当有请求的时候就返回那个HTML文件。
这样就实现了一个api接口。思路大概就这样,比较简单,没做什么防护。
下面这个是脚本代码。
1 import requests,time,re #一共三个模块,没装的先装 2 3 def zyw(): 4 while(True): 5 url='https://www.525zyw.com/' #爬的网站URL 6 html=requests.get(url).text #获取网站的首页源代码 7 re_url=re.findall('<li class="column half"><div class="lbbt_c00">(.*?)</div>.*?</li>',html,re.S) #比配最新资源 8 list_r='' 9 for i in re_url: 10 tiem=re.findall('.*?>(.*?)</span>.*?',i,re.S)[0] #这里的四个正则主要是进一步的提取我们需要的东西 11 src=re.findall('.*?<img src="(.*?)"/>.*?',i,re.S)[0] # 12 href=re.findall('.*?<a href="(.*?)".*?',i,re.S)[0] 13 title=re.findall('.*?title="(.*?)".*?',i,re.S)[0] 14 res='<span style="font-weight: bold;">%s</span><img src="%s%s"/> <a href="%s%s" title="%s" style="color:#000000;" target="_blank">%s</a><br><br>'%(tiem,url,src,url,href,title,title) 15 list_r=list_r+res #经过上面的拼接,这里是所有的内容加入一个字符串 16 f=open('./templates/zyw.html','w') #打开文件 17 f.write(list_r) #把字符串写入文件 18 f.close() 19 time.sleep(3600) #这里是每隔1个小时去爬一次,测试时先注释掉 20 21 if __name__ == '__main__': 22 zyw() #调用
这里是用flask框架做对接。本来是想直接返回HTML文件的,但是出现了点问题,我就读HTML文本直接返回文本。
1 from flask import Flask 2 from flask import request 3 4 app=Flask(__name__) 5 @app.route('/zyw/ziyuan/') 6 def hm(): 7 ff=open("templates/zyw.html") 8 str=ff.read() 9 ff.close() 10 return str