Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

scrapy爬虫学习【二】之自动爬取

$
0
0
Spider爬取过程 以初始的URL初始化Request,并设置回调函数。当该request下载完毕并返回时,将生成response,并作为参数传递给该回调函数。 spider中初始的request是通过调用 start_requests() 来获取的。 start_request() 读取 start_urls 中的URL,并以 parse 为回调函数生成 Request 。 在回调函数内分析返回的(网页)内容,返回 Item 对象 或者 Request 或者 一个包括二者的可迭代容器 。返回的Request对象之后会经过Scrapy处理, 下载相应的内容并调用设置的callback函数 (函数可相同)。 在回调函数内,您可以使用选择器( Selector 、BeautifulSoup、lxml等)来分析网页内容,并根据分析的数据生成item。 最后,由spider返回的item将被存到数据库(由某些 Item Pipeline 处理)或使用 Feed exports 存入到文件中。 Spider样例 import scrapy from myproject.itemsimport MyItem class MySpider(scrapy.Spider): ''' 一个回调函数中返回多个Request对象和Item ''' name = 'example.com' allowed_domains = ['example.com'] start_urls = [ 'http://www.example.com/1.html', 'http://www.example.com/2.html', 'http://www.example.com/3.html', ] def parse(self, response): sel = scrapy.Selector(response) for h3in response.xpath('//h3').extract(): yield MyItem(title=h3) for urlin response.xpath('//a/@href').extract(): yield scrapy.Request(url, callback=self.parse) CrawlSpider样例 import scrapy from scrapy.contrib.spidersimport CrawlSpider, Rule from scrapy.contrib.linkextractorsimport LinkExtractor class MySpider(CrawlSpider): name = 'example.com' allowed_domains = ['example.com'] start_urls = ['http://www.example.com'] # 在如下的规则中,第一条表示匹配category.php但是不匹配subsection.php(没有callback意味着follow为True表示跟进链接) # 在如下的规则中,第二条表示表示匹配item.php,并使用spider的parse_item方法进行分析。 rules = ( Rule(LinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))), Rule(LinkExtractor(allow=('item\.php', )), callback='parse_item'), ) def parse_item(self, response): self.log('Hi, this is an item page! %s' % response.url) item = scrapy.Item() item['id'] = response.xpath('//td[@id="item_id"]/text()').re(r'ID: (\d+)') item['name'] = response.xpath('//td[@id="item_name"]/text()').extract() item['description'] = response.xpath('//td[@id="item_description"]/text()').extract() return item

Viewing all articles
Browse latest Browse all 9596

Trending Articles