易用小爬虫 Scrapy

爬虫向来是居家旅行,馈赠亲友,采集剽窃网络数据的必备小宠物,Scrapy是python下的一个爬虫框架,为使用者实现了一些通用功能,免去直接调用urllib2、BeautifulSoup的麻烦。安装很简单,直接easy_install,因为依赖关系我又另外安装了Twistedzope.interface。然后稍稍参考入门教程,就能写出满足需求的爬虫。

在spiders目录下创建py文件,里面就是你自己的爬虫了。主要功能实现在parse函数里,析取页面元素采用XPath来做,又简单又强大,不过我也发现一些限制,当然也可能是我还不会用。在项目目录里用 scrapy shell http://xxxxx.com 就能打开shell直接试探析取元素的效果,很方便的功能。

本来还写了一点说明但blog抽风文章掉了,现在直接贴代码吧,写的很粗糙。。。知道是干嘛用的吗,嘿嘿

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.http import Request

from zhcw.items import ZhcwItem

class XSSSpider(BaseSpider):
name="zhcw.com"
allowed_domains=["zhcw.com"]
start_urls=["http://kaijiang.zhcw.com/zhcw/html/ssq/list.html"]

def parse(self,response):
hxs=HtmlXPathSelector(response)
a=hxs.select('//td/text()').re(r'\d{7}')
b=hxs.select('//em/text()').extract()
i=0
f=open('try.txt','a')
for no in a:
f.write(no+' ')
str=''
for j in range(7):
str=str+b[i]+' '
i=i+1
f.write(str+'\n')
f.close()
if response.url[-7:-5]!='61':
nexturl='http://kaijiang.zhcw.com'+hxs.select('//a/@href').extract()[-2]
yield Request(nexturl,callback=self.parse)