知識碎片(一)

在抓取新浪微博過程中,發現一些方法的其他用途以及自己不常用的方法,整理如下:

1. response.json()

對於requests請求的數據是Json格式的,之前都是使用**json.loads()方法解析,其實也可以使用response.json()**方法,結果是一樣的。

response = requests.get(url, params=params)
return response.json()

2. Get請求

Get請求時需要攜帶參數params,請求的的url尾部的"?"可加可不加,並沒有影響。

3. 截取H5數據

當請求URL返回的數據格式是H5形式的,但是在這其中,有我們想要的數據並且是JSON格式的,可以使用下面這種略微有些麻煩的方法:

目標數據起始位置
目標數據結束位置
  先用str.find()和str.rfind()獲取目標數據的起始位置和結束位置,然後使用列表把這部分切出來,使用json.loads()進行轉換成dict()形式。(如果熟悉正則的話,感覺正則會更方便一些,這種方法使用場景不多)

html = requests.get(url).text()	
html = html[html.find('"status:"'):]	
html = html[:html.rfind('"hotSchme:"')]
html = '{' + html + '}'
js = json.loads(html, strict=False)

4. 有序字典

Python原生的字典本身是無序的,因爲是按照Hash來存儲的;但是當我們需要有序字典數據結構時,可以使用Python模塊Collections自帶的子類OrderedDict來實現。

from collections import OrderedDict
dict = OrderedDict()

5. Xpath使用情況

之前對於xpath提取只用於整個response.text(),其實,xpath並不是只適用於完整response.text(),也適用於其中某一部分。換句話說,pxath提取適用於所有包含h5格式數據的字符串str

text = weibo_info['text'].xpath('string(.)')

text是json.loads()獲取的一部分數據,不過因爲其中包含< >這種標籤(如a標籤,br標籤),所以使用xpath提取文本。

6.emumerate()方法

該函數用於將一個可遍歷的數據對象(如列表、元組和字符串)組合爲一個索引序列,同事列出數據和數據下標。

for index,value in emumerate(List):
	print (index,value)

7.instance()、str.startswith()、str.endswith()

instance() ----- 判斷兩個類型是否相同
startswith ----- 檢查字符串是否是以指定字符串開頭,返回布爾值
str.endswith ----- 檢查字符串是否是以指定字符串結尾,返回布爾值

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