構(gòu)建自己的數(shù)據(jù)王國
scrapy startproject myspider
這些文件的主要作用列舉如下:
準(zhǔn)備抓取網(wǎng)站http://www.itcast.cn/channel/teacher.shtml網(wǎng)站里的所有講師的姓名、職稱和個(gè)人信息。
import scrapyclass ItcastItem(scrapy.Item): name = scrapy.Field() level = scrapy.Field() info = scrapy.Field()
爬蟲功能要分兩步:
1、爬數(shù)據(jù)
scrapy genspider itcast "itcast.cn"
import scrapyclass ItcastSpider(scrapy.Spider): name = 'itcast' allowed_domains = ['itcast.cn'] start_urls = ['http://www.itcast.cn/channel/teacher.shtml'] def parse(self, response): pass
其實(shí)也可以由我們自行創(chuàng)建itcast.py并編寫上面的代碼,只不過使用命令可以免去編寫固定代碼的麻煩。
要建立一個(gè)spider,你必須用scrapy.spider類創(chuàng)建一個(gè)子類,并確定了三個(gè)強(qiáng)制的屬性和一個(gè)方法。
- name = ‘itcast’:這個(gè)爬蟲的識別名稱,必須是唯一的,在不同的爬蟲必須定義不同的名字
- allow_domains=[]:是搜索的域名范圍,也就是爬蟲的約束區(qū)域,規(guī)定爬蟲只爬取這個(gè)域名下的網(wǎng)頁,不存在的URL會被忽略
- start_urls=[]:爬取的URL元祖/列表,爬蟲從這里開始抓取數(shù)據(jù),所以,第一次下載的數(shù)據(jù)將會從這些urls開始,其他子URL將會從這些起始URL中繼承性生成。
- parse(self,response):解析的方法,每個(gè)初識URL完成下載后將被調(diào)用,調(diào)用的時(shí)候傳入從每一個(gè)URL傳回的Response對象來作為唯一參數(shù)主要作用如下:
- 負(fù)責(zé)解析返回的網(wǎng)頁數(shù)據(jù)(reponse.body),提取結(jié)構(gòu)化數(shù)據(jù)(生成item)
- 生成需要下一頁的URL請求
start_urls=['http://www.itcast.cn/channel/teacher.shtml']
def parse(self, response): filename="teacher.html" with open(filename,'wb') as f: f.write(response.body)
scrapy crawl itcast
2、取數(shù)據(jù)
<div class="li_txt"> <h3> xxx </h3> <h4> xxxxx </h4> <p> xxxxxxx </p>
from myspider.items import MyspiderItem
def parse(self, response): # filename="teacher.html" # with open(filename,'wb') as f: # f.write(response.body) items=[] for each in response.xpath("http://div[@class='li_txt']"): item=MyspiderItem() name=each.xpath("h3/text()").extract()[0] level=each.xpath("h4/text()").extract()[0] info=each.xpath("p/text()").extract()[0] item['name']=name item['level']=level item['info']=info items.append(item) return items
我們暫時(shí)先不處理管道。
scrapy保存信息的最簡單的方法主要有四中,-o輸出指定格式的文件,命令如下:
#json格式,默認(rèn)為unicode編碼scrapy crawl itcast -o teachers.jsonscrapy crawl itcast -o teachers.jsonlscrapy crawl itcast -o teachers.csvscrapy crawl itcast -o teachers.xml
聯(lián)系客服