1 如果没有看过scrapy的朋友,可以到scrapy的官网看一下再来看这篇文章
2 创建一个scrapy的项目,请看http://blog.csdn.net/chenguolinblog/article/details/19699865
3 下面我们就一个一个文件的来分析,最后我会给出GitHub上面的源码
(1)第一个文件 spidr.py,这个文件的作用就是我们自己定义的蜘蛛,用来爬取网页的,具体看以下的注释
- __author__ = 'chenguolin'
- """
- Date: 2014-03-06
- """
- from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
- from scrapy.contrib.spiders import CrawlSpider, Rule #这个是预定义的蜘蛛,使用它可以自定义爬取链接的规则rule
- from scrapy.selector import HtmlXPathSelector #导入HtmlXPathSelector进行解析
- from firstScrapy.items import FirstscrapyItem
- class firstScrapy(CrawlSpider):
- name = "firstScrapy" #爬虫的名字要唯一
- allowed_domains = ["yuedu.baidu.com"] #运行爬取的网页
- start_urls = ["http://yuedu.baidu.com/book/list/0?od=0&show=1&pn=0"] #第一个爬取的网页
- #以下定义了两个规则,第一个是当前要解析的网页,回调函数是myparse;第二个则是抓取到下一页链接的时候,不需要回调直接跳转
- rules = [Rule(SgmlLinkExtractor(allow=('/ebook/[^/]+fr=booklist')), callback='myparse'),
- Rule(SgmlLinkExtractor(allow=('/book/list/[^/]+pn=[^/]+', )), follow=True)]
- #回调函数
- def myparse(self, response):
- x = HtmlXPathSelector(response)
- item = FirstscrapyItem()
- # get item
- item['link'] = response.url
- item['title'] = ""
- strlist = x.select("//h1/@title").extract()
- if len(strlist) > 0:
- item['title'] = strlist[0]
- # return the item
- return item