Scrapy爬虫框架获取爱站词库

python+scrapy采集爱站关键词,用到的知识点有scrpy,re这两个模块,因为已经有一篇文章用xpath的方式去提取内容,所以这次就用下正则表达式python中re这个模块;
Scrapy这个库有点复杂,新手建议从urllib,requests这些库开始,我下面的代码页只是简单运用一下,Scrapy可以使用用UA池,ip池,禁止cookies,下载延迟,Google cache,分布式爬取等强大仿被ban策略。
#encoding=utf-8
#在所有工作之前,先用scrapy startproject projectname,这时会生成一个叫projectname的文件夹
from scrapy.spiders import Spider #导入模块
from scrapy.selector import Selector
from scrapy.linkextractors import LinkExtractor
from scrapy.http import Request
import re
class cispider(Spider): #面向对象中的继承类
name='ciku' #如果是win7运行的时候在你创建projectname的目录下面通过cmd,敲上scrapy crawl ciku来运行
start_urls=['http://ci.aizhan.com/seo/'] #目标网站
def parse(self,response): #类的方法
html=response.body
r=re.compile(r'<td class="blue t_l"><a href="http://www\.baidu\.com/baidu.*?" target="_blank" rel="nofollow">(.*?)</a></td>[\s\S]*?<td align="right">(\d+)</td>')
a=re.findall(r,html) #提取正则
for i in a:
f=','.join(i)
w=re.compile('<font color="#FF0000">|</font>')
b = w.sub('',f).decode('utf-8').encode('gbk') #解决win7下的编码问题
print b
b=re.compile(r'页号:<a class="on">1</a> <a href="(.*?)">2</a> ')
urls=re.findall(b,html)
for n in urls:
c='http://ci.aizhan.com'
f=c+n
print f
yield Request(f,callback=self.parse) #回调,这里大概的过程就是将页码,翻页数,如第二页,第三页等返回给self.pase()来获取内容关键词

浙公网安备 33010602011771号