urllib淘太、requests的用法

urllib用法

from urllib import request
from urllib import parse
import json


url = 'http://top.hengyan.com/dianji/default.aspx?p=1'
# 構(gòu)建請(qǐng)求頭
headers = {
     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3722.400 QQBrowser/10.5.3738.400'
}
 """
 url :目標(biāo)url
 data=None  :默認(rèn)為None表示是get請(qǐng)求,如果不為None說明是get請(qǐng)求
 timeout:設(shè)置請(qǐng)求的過期時(shí)間
 cafile=None, capath=None, cadefault=False:證書相關(guān)參數(shù)
 context=None :忽略證書認(rèn)證
 """
 # url不能添加請(qǐng)求頭
 response = request.urlopen(url=url, timeout=10)

# 添加請(qǐng)求頭
req = request.Request(url=url, headers=headers)
response = request.urlopen(req, timeout=10)

code = response.status
url = response.url
b_content = response.read()

html = b_content.decode('utf-8')

# 本地保存
with open('hengyan.html', 'w') as file:
   file.write(html)


#####################post請(qǐng)求#############################
# 世紀(jì)佳緣網(wǎng)
def get_ssjy_data(page=1):
    url = 'http://search.jiayuan.com/v2/search_v2.php'
    # 構(gòu)建請(qǐng)求頭
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3722.400 QQBrowser/10.5.3738.400'
    }

    form_data = {
        'sex': 'f',
        'key': '',
        'stc': '1:11,2:20.28,23:1',
        'sn': 'default',
        'sv': '1',
        'p': str(page),
        'f': 'search',
        'listStyle': 'bigPhoto',
        'pri_uid': '0',
        'jsversion': 'v5',
    }

    form_data = parse.urlencode(form_data).encode('utf-8')

    # 構(gòu)建請(qǐng)求對(duì)象
    req = request.Request(url=url, data=form_data, headers=headers)
    response = request.urlopen(req, timeout=10)
    if response.status == 200:
        content = response.read().decode('utf-8').replace('##jiayser##//', '').replace('##jiayser##', '')
        data = json.loads(content)
        userinfos = data['userInfo']
        for user in userinfos:
            age = user['age']
            name = user['nickname']
            gender = user['sex']

        # 獲取下一頁
        total_page = int(data['pageTotal'])
        print(str(page) + '頁爬取完畢')
        if page < total_page:
            # 需要繼續(xù)提取下一頁
            next_page = page + 1
            # 遞歸的方式规丽,繼續(xù)提取下一頁數(shù)據(jù)
            get_ssjy_data(page=next_page)
        else:
            # 數(shù)據(jù)提取完畢
            print('數(shù)據(jù)爬取完畢')

if __name__ == '__main__':
    get_ssjy_data()

requests用法

一蒲牧、什么是requests?
requests是基于urllib的再一次封裝,具有urllib的一切特性赌莺,并且API調(diào)用更加方便冰抢,一個(gè)基于網(wǎng)絡(luò)請(qǐng)求的模塊,模擬瀏覽器發(fā)起請(qǐng)求
二艘狭、為什么使用requests模塊挎扰?
1.自動(dòng)處理url編碼
2.自動(dòng)處理post請(qǐng)求參數(shù)
3.簡(jiǎn)化cookie和代理的操作
cookie的操作:
a.創(chuàng)建一個(gè)cookiejar對(duì)象
b.創(chuàng)建一個(gè)handler對(duì)象
c.創(chuàng)建一個(gè)opener對(duì)象
代理的操作:
a.創(chuàng)建handler對(duì)象,代理ip和端口封裝到該對(duì)象
b.創(chuàng)建opener對(duì)象
三巢音、如何安裝遵倦?
安裝:pip3 install requests
使用流程:
1.指定url
2.使用requests模塊發(fā)起請(qǐng)求
3.獲取響應(yīng)的二進(jìn)制數(shù)據(jù)
4.進(jìn)行持久化存儲(chǔ)
requests包括五中請(qǐng)求:get,post,ajax的get請(qǐng)求,ajax的post請(qǐng)求官撼,綜合
requests的get請(qǐng)求
url = 'http://top.hengyan.com/dianji/default.aspx?'

# 將get請(qǐng)求的參數(shù)放在字典中
params = {
    'p': 1
}
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
}
response = requests.get(url=url, headers=headers, params=params)
# 獲取html頁面源碼
html = response.text
# 獲取頁面的二進(jìn)制數(shù)據(jù)
b_content = response.content
# 獲取響應(yīng)的狀態(tài)碼
code = response.status_code
# 獲取請(qǐng)求的響應(yīng)頭
response_headers = response.headers
# 獲取請(qǐng)求的url地址
url = response.url

# 獲取cookies信息(使用requests模擬登陸網(wǎng)站后獲取cookies)
cookies = response.cookies
# 將RequestsCookieJar轉(zhuǎn)換成字典
cookies_dict = requests.utils.dict_from_cookiejar(cookies)
# 將字典轉(zhuǎn)換成RequestsCookieJar
cookiesjar_obj = requests.utils.cookiejar_from_dict(cookies_dict)
requests的post用法
url = 'http://search.jiayuan.com/v2/search_v2.php'
# 構(gòu)建請(qǐng)求頭
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3722.400 QQBrowser/10.5.3738.400'
}

form_data = {
    'sex': 'f',
    'key': '',
    'stc': '1:11,2:20.28,23:1',
    'sn': 'default',
    'sv': '1',
    'p': '1',
    'f': 'search',
    'listStyle': 'bigPhoto',
    'pri_uid': '0',
    'jsversion': 'v5',
}
response = requests.post(url=url, data=form_data, headers=headers)

if response.status_code == 200:
    pattern = re.compile('##jiayser##(.*?)##jiayser//', re.S)
    json_str = re.findall(pattern=pattern, string=response.text)[0]
    json_data = json.loads(json_str)
自定義請(qǐng)求頭信息:
from fake_useragent import UserAgent
定制請(qǐng)求頭
headers ={
    "User-Agent":UserAgent().random
}
封裝get請(qǐng)求參數(shù):
params = {
    "變量名":"參數(shù)"
}

requests庫中的session作用:
維持統(tǒng)一會(huì)話梧躺,在跨請(qǐng)求訪問的時(shí)候能夠保存一些信息(比如cookies)
cookie:
1.基于用戶的用戶數(shù)據(jù)
2.需求:爬取xx用戶的豆瓣網(wǎng)的個(gè)人主頁數(shù)據(jù)

cookie作用:服務(wù)端使用cookie來記錄客戶端的狀態(tài)信息
實(shí)現(xiàn)流程:
1.執(zhí)行登錄操作(獲取cookie)
2.在發(fā)起個(gè)人主頁請(qǐng)求時(shí),需要將cookie攜帶到該請(qǐng)求中
注意:session對(duì)象:發(fā)送請(qǐng)求(會(huì)將cookie對(duì)象進(jìn)行自動(dòng)存儲(chǔ))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末傲绣,一起剝皮案震驚了整個(gè)濱河市掠哥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秃诵,老刑警劉巖续搀,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異菠净,居然都是意外死亡禁舷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門嗤练,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榛了,“玉大人,你說我怎么就攤上這事煞抬∷螅” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵革答,是天一觀的道長(zhǎng)战坤。 經(jīng)常有香客問我曙强,道長(zhǎng),這世上最難降的妖魔是什么途茫? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任碟嘴,我火速辦了婚禮,結(jié)果婚禮上囊卜,老公的妹妹穿的比我還像新娘娜扇。我一直安慰自己,他們只是感情好栅组,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布雀瓢。 她就那樣靜靜地躺著,像睡著了一般玉掸。 火紅的嫁衣襯著肌膚如雪刃麸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天司浪,我揣著相機(jī)與錄音泊业,去河邊找鬼。 笑死啊易,一個(gè)胖子當(dāng)著我的面吹牛吁伺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播认罩,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼箱蝠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了垦垂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤牙瓢,失蹤者是張志新(化名)和其女友劉穎劫拗,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矾克,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡页慷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胁附。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酒繁。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖控妻,靈堂內(nèi)的尸體忽然破棺而出州袒,到底是詐尸還是另有隱情,我是刑警寧澤弓候,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布郎哭,位于F島的核電站他匪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏夸研。R本人自食惡果不足惜邦蜜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亥至。 院中可真熱鬧悼沈,春花似錦、人聲如沸姐扮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溶握。三九已至杯缺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間睡榆,已是汗流浹背萍肆。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胀屿,地道東北人塘揣。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像宿崭,于是被迫代替她去往敵國和親亲铡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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