在上一篇文章的末尾,我們創建了一個scrapy框架的爬蟲項目test,現在來運行下一個簡單的爬蟲,看看scrapy爬取的過程是怎樣的。
##一、爬蟲類編寫(spider.py)
~~~
from scrapy.spider import BaseSpider
class test(BaseSpider):
name = "test"
allowed_domains = ["yuedu.baidu.com"]
start_urls = ["http://yuedu.baidu.com/book/list/0?od=0&show=1&pn=0"]
def parse(self, response):
print response.url
~~~
##二、爬網頁:運行scrapy項目
這里選擇從命令行啟動運行項目的方式,一定要注意工程目錄結構,能夠運行scrapy命令的只有scrapy安裝的根目錄下。
cd到scrapy的根目錄,我的是D:\Python27\,然后運行scrapy命令:scrapy runspider test\test\spiders\spider.py。(或者直接運行工程項目的命令scrapy crawl test),可以看到爬蟲爬取的過程有一些debug信息輸出:

scrapy給爬蟲的start_urls屬性中的每個url創建了一個scrapy.http.Request對象,指定parse()方法為回調函數。當這些Request被調度并執行,之后通過parse()返回scrapy.http.Response對象,返回給爬蟲。
##三、取網頁:網頁解析
這里用shell爬取網頁,cd到項目的根目錄test\下,在cmd中輸入:
~~~
scrapy shell http://yuedu.baidu.com
~~~
可以看到結果如下圖:

剛才的整個過程中,shell載入url后獲得了響應,由本地變量response存儲響應結果。
來看下response的內容,輸入response.body可以查看response的body部分,即抓到的網頁內容:

要查看head部分,輸入response.headers:

##四、用選擇器xpath提取網頁
之前提取網頁是用的正則,這里選擇器xpath提供了更好的接口。shell有一個selector對象sel,可以根據返回的數據類型自動選擇最佳的解析方式(XML or HTML),無需再指明了。
1.抓取網頁標題,即<titie>標簽,在命令行里輸入:response.selector.xpath(‘//title’)

或者:response.xpath(‘//title’)

2.抓取<title>下的<text>內容,命令sel.xpath(‘//title/text()’).extract()

先寫到這里,下篇文章給出一個關于scrapy項目的完整實例。
原創文章,轉載請注明出處:[http://blog.csdn.net/dianacody/article/details/39753933](http://blog.csdn.net/dianacody/article/details/39753933)
- 前言
- 【java】微博爬蟲(一):小試牛刀——網易微博爬蟲(自定義關鍵字爬取微博數據)(附軟件源碼)
- 【java】微博爬蟲(二):如何抓取HTML頁面及HttpClient使用
- 【java】微博爬蟲(三):庖丁解牛——HTML結構分析與正則切分
- 【java】微博爬蟲(四):數據處理——jsoup工具解析html、dom4j讀寫xml
- 【java】微博爬蟲(五):防止爬蟲被墻的幾個技巧(總結篇)
- 【python】網絡爬蟲(一):python爬蟲概述
- 【python】網絡爬蟲(二):網易微博爬蟲軟件開發實例(附軟件源碼)
- 【python】網絡爬蟲(三):模擬登錄——偽裝瀏覽器登錄爬取過程
- 【python】網絡爬蟲(四):scrapy爬蟲框架(架構、win/linux安裝、文件結構)
- 【python】網絡爬蟲(五):scrapy爬蟲初探——爬取網頁及選擇器
- 打包python文件為exe文件(PyInstaller工具使用方法)