爬蟲的所使用的模塊以及解析器

1.request的使用:

????????Requests 唯一的一個非轉(zhuǎn)基因的 Python HTTP 庫抄腔,人類可以安全享用:)????????? ??????

????????Requests 繼承了urllib的所有特性猎塞。Requests支持HTTP連接保持和連接池蛤肌,支持使用cookie保持會話捣郊,支持文件上傳非剃,支持自動確定響應(yīng)內(nèi)容的編碼,支持國際化的URL和 POST 數(shù)據(jù)自動編碼宙暇。

? ? ????安裝方法(linux):pip3 install requests

? ? ? ? GET請求(headers參數(shù)和parmas參數(shù)):

????????response = requests.get("http://www.baidu.com/")? ??????????????????

????????# 也可以這么寫

????????# response = requests.request(

????????? ?"get",

? ? ????????"http://www.baidu.com/"

????????)

????????????response的常用方法:????????????????????????? ??

????????????response.text 返回解碼后的字符串????

????????????respones.content 以字節(jié)形式(二進制)返回输枯。

????????????response.status_code  響應(yīng)狀態(tài)碼

????????????response.request.headers  請求的請求頭

????????????response.headers  響應(yīng)頭

????????????response.encoding = 'utf-8' 可以設(shè)置編碼類型

????????????response.encoding 獲取當(dāng)前的編碼

????????????response.json() 內(nèi)置的JSON解碼器,以json形式返回,前提返回的內(nèi)容確保是json格式的占贫,不然解析出錯會拋異常

? ? ? ? ? ? ? ? POST請求(data參數(shù)):

? ??????????????response = requests.post(url=url, data = data)

? ? ? ? ? ? ? ??url:post請求的目標(biāo)url? ?|? ?data:post請求的表單數(shù)據(jù)

? ??????????????傳入data數(shù)據(jù) 對于 POST 請求來說桃熄,我們一般需要為它增加一些參數(shù)。那么最基本的傳參方法可以利用 data 這個參數(shù).

? ??????????????

2.正則表達(dá)式匹配:

? ??????????正則表達(dá)式型奥,又稱正規(guī)表示式瞳收、正規(guī)表示法、正規(guī)表達(dá)式厢汹、規(guī)則表達(dá)式螟深、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex烫葬、regexp或RE)界弧,是計算機科學(xué)的一個概念。正則表達(dá)式使用單個字符串來描述搭综、匹配一系列匹配某個句法規(guī)則的字符串垢箕。在很多文本編輯器里,正則表達(dá)式通常被用來檢索兑巾、替換那些匹配某個模式的文本条获。

????????????Regular Expression的“Regular”一般被譯為“正則”、“正規(guī)”蒋歌、“常規(guī)”帅掘。此處的“Regular”即是“規(guī)則”、“規(guī)律”的意思堂油,Regular Expression即“描述某種規(guī)則的表達(dá)式”之意修档。

? ??????????目的 給定一個正則表達(dá)式和另一個字符串,我們可以達(dá)到如下的目的:

? ? ? ? ? ? (1)給定的字符串是否符合正則表達(dá)式的過濾邏輯(稱作“匹配”):

? ? ? ? ? ? (2)可以通過正則表達(dá)式称诗,從字符串中獲取我們想要的特定部分萍悴。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

正則表達(dá)式語法支持情況:

正則表達(dá)式匹配的規(guī)則如下:?



XPath選擇器:

? ??????XPath (XML Path Language) 是一門在 XML 文檔中查找信息的語言头遭,可用來在 XML 文檔中對元素和屬性進行遍歷寓免。

????????XPath 開發(fā)工具 1.開源的XPath表達(dá)式編輯工具:XMLQuire(XML格式文件可用) 2.Chrome插件 XPath Helper 3.Firefox插件 XPath Checker

????????選取節(jié)點 XPath 使用路徑表達(dá)式來選取 XML 文檔中的節(jié)點或者節(jié)點集。這些路徑表達(dá)式和我們在常規(guī)的電腦文件系統(tǒng)中看到的表達(dá)式非常相似




CSS選擇器:BeautifullSoup4:

????????Beautiful Soup 也是一個HTML/XML的解析器计维,主要的功能也是如何解析和提取 HTML/XML 數(shù)據(jù)袜香。

????????lxml 只會局部遍歷,而Beautiful Soup 是基于HTML DOM的鲫惶,會載入整個文檔蜈首,解析整個DOM樹,因此時間和內(nèi)存開銷都會大很多,所以性能要低于lxml欢策。

????????BeautifulSoup 用來解析 HTML 比較簡單吆寨,API非常人性化,支持CSS選擇器踩寇、Python標(biāo)準(zhǔn)庫中的HTML解析器啄清,也支持 lxml 的 XML解析器。

????????Beautiful Soup 3 目前已經(jīng)停止開發(fā)俺孙,推薦現(xiàn)在的項目使用Beautiful Soup 4辣卒。使用 pip 安裝即可:pip install beautifulsoup4


pyQuery解析器的使用:

????????PyQuery簡介 pyquery相當(dāng)于jQuery的python實現(xiàn),可以用于解析HTML網(wǎng)頁等睛榄。它的語法與jQuery幾乎完全相同荣茫,對于使用過jQuery的人來說很熟悉,也很好上手场靴。

? ??????1啡莉、.html()和.text()?獲取相應(yīng)的 HTML 塊或者文本內(nèi)容,

? ??????2旨剥、(selector):通過選擇器來獲取目標(biāo)內(nèi)容票罐,?

? ??????3、.eq(index):根據(jù)索引號獲取指定元素(index 從 0 開始)

? ??????4泞边、.find():查找嵌套元素该押,

???????? 5、.filter():根據(jù) class阵谚、id 篩選指定元素蚕礼,

? ??????6、.attr():獲取梢什、修改屬性值奠蹬,?

數(shù)據(jù)提取JSON與JsonPATH:

????????JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,它使得人們很容易的進行閱讀和編寫嗡午。同時也方便了機器進行解析和生成囤躁。適用于進行數(shù)據(jù)交互的場景,比如網(wǎng)站前臺與后臺之間的數(shù)據(jù)交互荔睹。? ??????

??????????json簡單說就是javascript中的對象和數(shù)組狸演,所以這兩種結(jié)構(gòu)就是對象和數(shù)組兩種結(jié)構(gòu),通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu)??????? ??????

????????????1.對象:對象在js中表示為{ }括起來的內(nèi)容僻他,數(shù)據(jù)結(jié)構(gòu)為 { key:value, key:value, ... }的鍵值對的結(jié)構(gòu)宵距,在面向?qū)ο蟮恼Z言中,key為對象的屬性吨拗,value為對應(yīng)的屬性值满哪,所以很容易理解婿斥,取值方法為 對象.key 獲取屬性值,這個屬性值的類型可以是數(shù)字哨鸭、字符串民宿、數(shù)組、對象這幾種像鸡。

????????????2.數(shù)組:數(shù)組在js中是中括號[ ]括起來的內(nèi)容勘高,數(shù)據(jù)結(jié)構(gòu)為 ["Python", "javascript", "C++", ...],取值方式和所有語言中一樣坟桅,使用索引獲取华望,字段值的類型可以是 數(shù)字、字符串仅乓、數(shù)組赖舟、對象幾種。

json模塊提供了四個功能:dumps夸楣、dump宾抓、loads、load豫喧,用于字符串 和 python數(shù)據(jù)類型間進行轉(zhuǎn)換石洗。

1. json.loads():把Json格式字符串解碼轉(zhuǎn)換成Python對象

????? ? ? ? ? ? ? ? ? ? ? ?

2. json.dumps():實現(xiàn)python類型轉(zhuǎn)化為json字符串,返回一個str對象 把一個Python對象編碼轉(zhuǎn)換成Json字符串



3. json.dump()?將Python內(nèi)置類型序列化為json對象后寫入文件

4. json.load()?讀取文件中json形式的字符串元素 轉(zhuǎn)化成python類型


Json結(jié)構(gòu)清晰紧显,可讀性高讲衫,復(fù)雜度低,非常容易匹配孵班,下表中對應(yīng)了XPath的用法涉兽。




?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市篙程,隨后出現(xiàn)的幾起案子枷畏,更是在濱河造成了極大的恐慌,老刑警劉巖虱饿,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拥诡,死亡現(xiàn)場離奇詭異,居然都是意外死亡氮发,警方通過查閱死者的電腦和手機渴肉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來折柠,“玉大人宾娜,你說我怎么就攤上這事批狐∩仁郏” “怎么了前塔?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長承冰。 經(jīng)常有香客問我华弓,道長,這世上最難降的妖魔是什么困乒? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任寂屏,我火速辦了婚禮,結(jié)果婚禮上娜搂,老公的妹妹穿的比我還像新娘迁霎。我一直安慰自己,他們只是感情好百宇,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布考廉。 她就那樣靜靜地躺著,像睡著了一般携御。 火紅的嫁衣襯著肌膚如雪昌粤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天啄刹,我揣著相機與錄音涮坐,去河邊找鬼。 笑死誓军,一個胖子當(dāng)著我的面吹牛袱讹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昵时,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼廓译,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了债查?” 一聲冷哼從身側(cè)響起非区,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盹廷,沒想到半個月后征绸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡俄占,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年管怠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缸榄。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡渤弛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甚带,到底是詐尸還是另有隱情她肯,我是刑警寧澤佳头,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站晴氨,受9級特大地震影響康嘉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜籽前,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一亭珍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枝哄,春花似錦肄梨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瘪贱,卻和暖如春纱控,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背菜秦。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工甜害, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人球昨。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓惹挟,卻偏偏與公主長得像援所,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容