
爬虫向来是居家旅行,馈赠亲友,采集剽窃网络数据的必备小宠物,Scrapy是python下的一个爬虫框架,为使用者实现了一些通用功能,免去直接调用urllib2、BeautifulSoup的麻烦。安装很简单,直接easy_install,因为依赖关系我又另外安装了Twisted和zope.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)
|