18.1 Scrapy Shellphp
Scrapy 終端是一個交互終端,咱們能夠在未啓動 spider 的狀況下嘗試及調試代碼,也能夠用來測試 XPath 或 CSS 表達式,查看他們的工做方式,方便咱們爬取的網頁中提取的數據。css
進入項目的根目錄,執行下列命令來啓動 shell 。html
執行命令:正則表達式
scrapy shell "http://www.itcast.cn/channel/teacher.shtml"shell
Scrapy Shell 根據下載的頁面會自動建立一些方便使用的對象,例如 Response 對象,以及 Selector 對象 (對 HTML及 XML內容)。框架
當 shell 載入後,將獲得一個包含 response 數據的本地 response 變量,輸入 response.body 將輸出 response 的包體,輸出 response.headers 能夠看到 response 的包頭。scrapy
例一:在 in 行輸入 response.body,結果以下:ide
例二:在 in 行輸入 response.headers,結果以下:學習
輸入 response.selector 時, 將獲取到一個 response 初始化的類 Selector 的對象,此時能夠經過使用 response.selector.xpath() 或 response.selector.css() 來對 response 進行查詢。測試
Scrapy 也提供了一些快捷方式, 例如 response.xpath()或response.css()一樣能夠生效。
Scrapy Selectors 內置 XPath 和 CSS Selector 表達式機制。
Selector有四個基本的方法,最經常使用的仍是xpath。
【 xpath() 】: 傳入 xpath 表達式,返回該表達式所對應的全部節點的 selector list 列表。
【 extract()】: 序列化該節點爲 Unicode 字符串並返回 list。
【 css() 】: 傳入 CSS 表達式,返回該表達式所對應的全部節點的 selector list 列表,語法同 BeautifulSoup4 。
【 re() 】: 根據傳入的正則表達式對數據進行提取,返回 Unicode 字符串 list 列表。
XPath 表達式的例子及對應的含義:
/html/head/title: 表示選擇<HTML>文檔中 <head> 標籤內的 <title> 元素。
/html/head/title/text(): 表示選擇上面提到的 <title> 元素的文字。
//td: 表示選擇全部的 <td> 元素。
//div[@class="mine"]: 表示選擇全部具備 class="mine" 屬性的 div 元素。
例如:XX社招的網站:http://hr.tencent.com/position.php?&start=0
第一步:進入項目的根目錄。
第二步:scrapy shell 命令啓動。
scrapy shell http://hr.tencent.com/position.php?&start=0
第三步:相關的 Selector 使用操做。
# 返回 xpath 選擇器對象列表。
response.xpath('//title')
# 使用 extract()方法返回 Unicode 字符串列表。
response.xpath('//title').extract()
# 打印列表第一個元素,終端編碼格式顯示。
Print(response.xpath('//title').extract()[0])
<title>職位搜索 | 社會招聘 | Tencent 騰訊招聘</title>
# 返回 xpath 選擇器對象列表。
response.xpath('//title/text()')
# 返回列表第一個元素的 Unicode 字符串。
response.xpath('//title/text()')[0].extract()
# 按終端編碼格式顯示。
print(response.xpath('//title/text()')[0].extract())
職位搜索 | 社會招聘 | Tencent 騰訊招聘
response.xpath('//*[@class="even"]')
在使用 Scrapy 爬蟲框架提取數據,首先要明確須要提取數據的字段和在 HTML網頁中的結構。而後在 Scrapy Shell中測試,測試經過後再應用到代碼中
咱們這裏使用 Scrapy Shell 主要是用來調試爬蟲代碼, Scrapy Shell 的做用很強大,這裏只是簡單的介紹了一下,須要更深刻的學習,能夠看官方文檔詳細介紹 Scrapy Shell ,或者相關的書籍。
官方文檔:http://scrapy-chs.readthedocs.io/zh_CN/latest/topics/shell.html