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