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的用法涉兽。