赞
踩
这是我们静态页面爬取的最后一篇了,主要针对的问题是翻页爬取。
先来观察一下翻页后的新页面地址是什么吧,我们可以看到,新页面的地址的设置很简单,就是改了个序号,第一页是1.shtml,第二页是2.shtml……最后一页就是18.shtml。
那就好办了,我们可以先用循环生成每页的地址,然后再按照前面的方法对每一页进行爬取就OK了。
url1=[]
for i in range(18):
url1.append('http://greenfinance.xinhua08.com/qyhjxxpl/'+str(i+1)+'.shtml')
url1
下面的思路就比较简单了,先从列表中取出第一页的地址,然后爬取第一页所包含的所有页面并保存,接着再取出第二页的地址,如此炮制……
总的代码如下:
import os os.chdir('d:\\') import requests import re url1=[] #生成18个页面的地址 for i in range(18): url1.append('http://greenfinance.xinhua08.com/qyhjxxpl/'+str(i+1)+'.shtml') #挨个从每一页里取出这一页所包含的地址和标题 for j in range(len(url1)): urlt=url1[j] req=requests.get(urlt) req.encoding=requests.utils.get_encodings_from_content(req.text) #text1=re.findall('<div id="ctrlfscont" class="article-content"><p>(.*?)</p></div>',req.text,re.S) ret=re.findall('<h4>(.*?)</h4>',req.text,re.S) reh=re.findall('<div class="newsinfo">.*?<a href="(.*?)">',req.text,re.S) #对这一页的每一个地址对应的内容进行提取和保存 for k in range(len(reh)): urlt=reh[k] ret[k]=ret[k].replace('*','st') req=requests.get(urlt) req.encoding=requests.utils.get_encodings_from_content(req.text) text2=re.findall('<div id="ctrlfscont" class="article-content"><p>(.*?)</p></div>',req.text,re.S) text2=re.sub('<p>|</p>|“|”','',str(text2).replace('\\n','')) with open(ret[k]+'.txt','w') as f: f.write(text2)
OK,到此为止大功告成。不到一会儿,300多篇文章的内容就保存好了,简直不要太容易哦。
有些朋友就不明白了,这些文本下载保存下来能有什么用呢?一般人我不会告诉他,我们可以用这些东西去做文本挖掘和热点发现。如果想继续玩,请关注下一波:文本挖掘和热点发现系列。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。