Scrapy 初窺筆記

2021-07-28 22:37:55 字數 2050 閱讀 2421

scrapy startproject yourprojectname

建立scrapy專案

開始爬蟲

scrapy crawl spidername

開始執行爬蟲

以上仿麻煩

根目錄新建執行檔案

from scrapy.cmdline import execute

execute(['scrapy', 'crawl', 'dingdian'])

頂點為spider的name

定義爬取的字段

就比如說爬**

欄位有 **作者,**內容等

item檔案下定義

class

dingdianitem

(scrapy.item):

author = scrapy.field

() content = scrapy.field

()

如上,定義一定要繼承item

然後欄位皆為field(), 沒有其他型別

比django要方便的多

開始寫核心spider部分

spider以start_requests為初始函式,該函式必須yield乙個可迭代物件

比如request(url, call_back, meta)

引數說明url,即需要request.get 的內容,call_back是乙個parse函式,該函式可接受乙個由剛才的get獲取的response, meta是由上乙個request往這傳的時候可以帶上的引數

parse 最終要yield 或 return 乙個或多個 item,來進行後續處理

這裡有個巨大的response盡量一次處理,不要在多個parse之間執行,因為所有的url,但凡被request過,不會被二次請求,簡單來說,url通常不能為response.url,如果你跟我一樣踩到這個坑,注意這個解決方法

scrapy的官方文件:

request函式在文件中的定義:

在這兒, request的 dont_filter 設定為true就可以了

item被收集完成後,進入pipeline,

這裡就進行最後的處理了,可以將item的內容提取出來,進行資料庫等的儲存

模板:

class

dingdianpipeline

(object):

defprocess_item

(self, item, spider):

# defertothread(self._process_item, item, spider

if isinstance(item, dcontentitem):

url = item['chapterurl']

name_id = item['id_name']

num_id = item['num']

xs_chaptername = item['chaptername']

xs_content = item['chaptercontent']

sql.insert_novel(name, content, name_id, num_id, url)

print('**儲存完畢')

return item

def process_item(self, item, spider):該方法必須重寫,且return item此外,此函式通常功能即為去重後儲存

以上為此次學習內容,差點一下午完成,踩坑踩兩天

初窺AOP(學習筆記)

aop為 aspect oriend programming的縮寫,意思為面向切面程式設計,是通過預編譯方式和執行期動態 實現程式功能的統一維護的一種技術。aop是oop的延續,是軟體開發中的乙個熱點,也是spring框架中的乙個重要內容,是函式式程式設計的一種衍生范型。利用aop可以對業務邏輯的各...

深度學習 初窺門徑筆記

深度學習的最終目的是獲取乙個多層的複雜函式,這個函式可以對輸入的值做出相對正確的輸出。比如 輸入乙個小貓的,函式經過運算輸出 這是乙隻貓 輸入乙個小狗的,函式經過運算輸出 這是乙隻狗 但是,用單個簡單函式很難得到這樣的效果,那麼聰明的人類就想到了 人的大腦神經網路不是簡單構成複雜的例項嗎?人的大腦神...

初窺Shell 指令碼

1 shell是什麼 shell指令碼就是利用shell的命令解釋的功能,對乙個純文字的檔案進行解析,然後執行這些功能,也可以說shell指令碼就是一系列命令的合集。shell可以直接使用在win unix linux上面,並且可以呼叫大量系統內部的功能來解釋執行程式,如果熟練使用並掌握shell指...