Scrapy是基於python的開源爬蟲框架,使用起來也比較方便。具體的官網檔:http://doc.scrapy.org/en/latest/
之前以為了解python就可以直接爬網站了,原來還要了解HTML,XML的基本協議,在了解基礎以后,在了解下xpath的基礎上,再使用正則表達式(python下的re包提供支持)提取一定格式的信息(比如說url),就比較容易處理網頁了。
xpath是Scrapy下快速提取特定信息(如title,head,href等)的一個接口。
幾個簡單的例子:
/html/head/title: 選擇HTML文檔<head>元素下面的<title> 標簽。
/html/head/title/text(): 選擇前面提到的<title> 元素下面的文本內容
//td: 選擇所有 <td> 元素
//div[@class="mine"]: 選擇所有包含 class="mine" 屬性的div 標簽元素
基本的路徑意義:
| 表達式 | 描述 |
|---|---|
| nodename | 選取此節點的所有子節點。 |
| / | 從根節點選取。 |
| // | 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。 |
| . | 選取當前節點。 |
| .. | 選取當前節點的父節點。 |
| @ | 選取屬性。 |
具體的使用實例:
比如對http://www.dmoz.org/Computers/Programming/Languages/Python/Books/ 網站提取特定的信息
1)、先在第一層tutorial文件夾下,在cmd中輸入: scrapy shell http://www.dmoz.org/Computers/Programming/Languages/Python/Books/
2)、現在比如我們需要抓取該網頁的tittle,由於前面的shell命令已經實例化了一個selector的對象sel, 就輸入 sel.xpath('//title') 獲取了網頁的標題。
3)、比如我們想要知道該網頁下的www.****.com形式的鏈接,可以使用xpath 結合正則表達式re提取信息,輸入 sel.xpath('//@href').re("www.[0-9a-zA-Z]+\.com")
部分參考:http://blog.csdn.net/pleasecallmewhy/article/details/19642329
正則表達式參考:http://blog.csdn.net/pleasecallmewhy/article/details/8929576
