【網絡爬蟲】【python】網絡爬蟲(五):scrapy爬蟲初探——爬取網頁及選擇器

        在上一篇文章的末尾,我們創建了一個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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章