scrapy框架—spiders
學(xué)習(xí)目標(biāo)
- 創(chuàng)建一個(gè)Scrapy項(xiàng)目
- 定義提取的結(jié)構(gòu)化數(shù)據(jù)(Item)
- 編寫爬取網(wǎng)站的 Spider 并提取出結(jié)構(gòu)化數(shù)據(jù)(Item)
- 編寫 Item Pipelines 來存儲(chǔ)提取到的Item(即結(jié)構(gòu)化數(shù)據(jù))
1. 創(chuàng)建一個(gè)爬蟲項(xiàng)目(scrapy startproject)
- 進(jìn)入自定義的項(xiàng)目目錄中,創(chuàng)建一個(gè)新的Scrapy項(xiàng)目。運(yùn)行下列命令:
- 其中, myspider 為項(xiàng)目名稱,可以看到將會(huì)創(chuàng)建一個(gè) myspider 文件夾,目錄結(jié)構(gòu)大致如下:
2. 明確目標(biāo)(mySpider/items.py)
我們打算抓取:http://www.itcast.cn/channel/teacher.shtml 網(wǎng)站里的所有講師的姓名、職稱和個(gè)人信息。
3. 創(chuàng)建一個(gè)爬蟲
- 在當(dāng)前目錄下輸入命令,將在mySpider/spider目錄下創(chuàng)建一個(gè)名為itcast的爬蟲,并指定爬取域的范圍:
- spiders文件夾下面會(huì)多出 itcast.py
spiders 爬蟲功能要分兩步
1. 發(fā)送請求 獲取響應(yīng)
(scrapy框架自動(dòng)實(shí)現(xiàn) 拿到網(wǎng)頁的原始代碼 response ; parse方法才是提取數(shù)據(jù) 需要手寫)
打開 myspider/spiders目錄里的 itcast.py,初始代碼如下:
要建立一個(gè)xxxSpider, 你必須用scrapy.Spider類創(chuàng)建一個(gè)子類,并確定了三個(gè)強(qiáng)制的屬性 和 一個(gè)方法。
-
name = “” :這個(gè)爬蟲的識(shí)別名稱,必須是唯一的,在不同的爬蟲必須定義不同的名字。
-
allow_domains = [ ] 是搜索的域名范圍,也就是爬蟲的約束區(qū)域,規(guī)定爬蟲只爬取這個(gè)域名下的網(wǎng)頁,不存在的URL會(huì)被忽略。
-
start_urls = [ ] :爬取的URL元祖/列表。爬蟲從這里開始抓取數(shù)據(jù),所以,第一次下載的數(shù)據(jù)將會(huì)從這些urls開始。其他子URL將會(huì)從這些起始URL中繼承性生成。
-
parse(self, response) :解析的方法,每個(gè)初始URL完成下載后將被調(diào)用,調(diào)用的時(shí)候傳入從每一個(gè)URL傳回的Response對象來作為唯一參數(shù),主要作用如下:
將start_urls的值修改為需要爬取的第一個(gè)url
start_urls = ["http://www.itcast.cn/channel/teacher.shtml"]2. 提取數(shù)據(jù) extract() 方法和extract_first()方法
scrapy框架中 response.xpath() 返回的是一個(gè)含有selector對象的列表
names = response.xpath("//div[@class='tea_con']//h3/text()") # 返回一個(gè)含有selector對象的列表scrapy框架中 extract() 方法提取文字
names = response.xpath("//div[@class='tea_con']//h3/text()").extract() # 使用 extract() 方法取到文字列表scrapy框架中 extract_first() 取列表第一個(gè)元素 如果沒有返回None
item["name"] = li.xpath(".//h3/text()").extract_first() # 相當(dāng)于item["name"] = li.xpath(".//h3/text()")[0].extract() if len(li.xpath(".//h3/text()")) > 0 else None總結(jié)
以上是生活随笔為你收集整理的scrapy框架—spiders的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行情基础知识概览
- 下一篇: 鸡尾酒会公式\帕金森定律(Parkins