2.1 爬蟲檔案的存放路徑的話:在下面這裡面配置
spider_modules = ['itcast.spiders']
newspider_module = 'itcast.spiders'
2.2 下面的這個可以配置agent 的一些相關# crawl responsibly by identifying yourself (and your website) on the user-agent
user_agent = 'itcast (+'
2.3 預設開啟的執行緒數為16,可以在下面的這些**裡面設定# configure maximum concurrent requests performed by scrapy (default: 16)
concurrent_requests = 32
2.4 預設抓取資料是不等待的,可以在下面設定# configure a delay for requests for the same website (default: 0)
# see
# see also autothrottle settings and docs
download_delay = 3
2.5 下面的這個是設定怕從是否遵從某個規定的,最好不要遵循不然的話好多資料會抓不到的# obey robots.txt rules
# robotstxt_obey = true
2.6未完待續3.1 name = 『***x』
這個表示當前的爬蟲類的唯一表示,乙個專案必須唯一,用來啟動爬蟲或者其他的時候用到
3.2 allowed_domains = [『
這個則表示當前的爬蟲會在哪些網域名稱下面抓取資料,如果不在這個網域名稱下面的話那麼就不會被抓取資料
3.3 start_urls = [『
起始的url位址列表,爬蟲執行後第一批請求,將從這個列表獲取
3.4 def parse(self, response)
這個方法會在start_urls頁面之後被執行,可以在這裡面執行相應的解析頁面的操作,例如:
nodelist = response.xpath("//div[@class='li_txt']")
# itemlist =
for node in nodelist:
# 建立item欄位物件,用來儲存資訊
item = itcastitem()
# 下面的返回的是乙個xpath物件列表,所以需要使用extract()方法來將其轉換成unicode字串
name = node.xpath("./h3/text()").extract()
title = node.xpath("./h4/text()").extract()
info = node.xpath("./p/text()").extract()
# 儲存到item欄位物件裡面
item['name'] = name[0]
item['title'] = title[0]
item['info'] = info[0]
# 返回提取的每乙個item資料給管道,給管道處理,然後還回來繼續執行當前的for迴圈裡面的**
yield item
上面的**使用了xpath來解析頁面的結構,scrapy預設支援將資料以4中形式輸出,可以通過
scrapy crawl 「爬蟲唯一表示名稱」 -o itcast.json
scrapy crawl 「爬蟲唯一表示名稱」 -o itcast.csv
還兩個忘掉了,大概語法就是這樣的
還可以直接將item返回給相應的管道處理,使用下面的這個**實現
yield item
注意如果要返回給管道的話需要在settings.py檔案裡面將管道的配置開啟
4.1 pipelines.py檔案的一些方法釋義
def
process_item
(self, item, spider):
return item
預設的只有上面這乙個方法的,這個方法是用來處理爬蟲類裡面傳遞來的item的,可以在裡面定義自己的處理邏輯,注意下需要**最後必須return item,item在管道裡面處理完畢之後需要再傳遞給引擎,return item就是將處理好的item傳遞給引擎的,如果不 return item的話那麼就會在這裡中斷掉,那麼就會出錯,再就是如果存在多個管道類的話那麼return item就表示將item接著傳遞給下乙個管道,執行那個管道的業務邏輯
再就是引數列表裡面的spider就是表示傳遞item過來的spider物件,可以通過.name等方法檢視spider的名字等資訊
def
__init__
(self):
可以在預設的方法之外新增這個初始化方法,這個方法的話初始化一些需要初始化的東西
def
close_spider
(self, spider):
還可以新增這個方法,這個方法可以算是乙個結束方法,裡面的話可以執行一些關閉某些流等操作,類似的資料庫的關閉等可以在這個方法裡面執行
4.2 自定義管道的配置
可以在settings.py裡面設定自定義的管道
# configure item pipelines
# see
item_pipelines =
item_pipelines這個是乙個字典,可以在裡面新增自定義的管道,其中itcast表示專案名,pipelines這個表示具體的檔案,itcastpipeline表示具體的管道類,後面的300則表示有限制,範圍在0-1000,值越小優先順序越高
item會順序的經過所有的管道類,然後全部經過後下乙個item進來,接著進入全部的管道
selectorts有四個基本的方法,最常用的就是xpath:
xpath():傳入xpath表示式,返回該列表所對應的所有節點的selectors list列表
extract():序列化該節點為unicode字串並返回list
css():傳入css表示式,返回該表示式所對應的所有節點的selector list列表,語法同beautifulsoup4
re():根據傳入的正規表示式對資料進行提取,返回unicode字串list列表
1 爬蟲檔案請求是傳送請求,處理響應的
2 item檔案是定義欄位的
3 管道檔案的話是進一步處理item的1 首先執行爬蟲檔案,爬蟲檔案會根據start_urls的位址傳送請求,然後得到響應
2 會執行parse方法,然後我們可以通過xpath或者正則等處理,然後存放到item中
3 可以同過yield來將item返回給管道,給管道進一步處理,如果存在多個管道的話那麼這個item就會根據settings.py檔案裡面定義的優先順序來順序執行,直到執行完畢全部的管道
4 有下乙個item的話那麼久執行下乙個item
5 沒有的話那麼就會返回給引擎1 爬蟲類的話需要將得到的網頁位址存放在item中
2 管道類需要繼承imagespipeline類(需要匯入),然後重寫get_media_requests方法,類似下面這樣
def
get_media_requests
(self, item, info):
imagelink = item["imagelink"]
yield scrapy.request(imagelink)
3 再就是需要在配置檔案中配置的存放路徑**季下面的images_store部分,如果爬取的頁面為手機端的頁面的話那麼需要設定下user_agent,如下面這樣,下面的這個為iphone的user_agent例子images_store = "/users/yedeguo/desktop/鬥魚"
# crawl responsibly by identifying yourself (and your website) on the user-agent
' like gecko) version/6.0 mobile/10a403 safari/8536.25'
關於python元組的一些學習心得
初識元組是覺得它其實與列表沒多大區別,功能還少了,感覺沒啥卵用 orz 可當我越深入的去了解這個傢伙,就越為之感到驚嘆,也被它獨特的魅力折服。好,話不多說,先貼 定義乙個元組 和列表類似,只不過將換成 ps 元組裡的元素可以是不同型別 元組的特點是 元組裡的元素時不能修改,只有查閱功能 列表有增刪改...
Cairngorm框架學習心得之一
cairngorm框架我知道名字很久,但是最近才開始認真的研究它.使用框架最大的好處就是對於團隊合作很有幫助.不過我從來沒有參加過任何程式設計團隊,但是仍然覺得應該使用它,主要還是為了將來的補充模組和其他伺服器轉換更方便.今天我想說的是另乙個好處.很早就在官方 發現了cairngorm又乙個ecli...
學習心得(一)
1.利用好手頭上的資源而不要一味地屯資源,資源只有被利用才是有價值的 2.關於筆記 筆記只是幫助我們學習和精進的一種工具,它只是一種方法,一種手段,但是絕不是我們的目的,沒有必要強迫自己在做筆記時,把每乙個字都寫的端正和美觀,把筆記做得完美,不僅消耗我們的時間,而且很可能它浪費了我們原本可以用來做題...