久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

python requests庫的使用

瀏覽:4日期:2022-06-30 11:30:22
requests模塊

使用requests可以模擬瀏覽器的請求,requests模塊的本質是封裝了urllib3模塊的功能,比起之前用到的urllib,requests模塊的api更加便捷

requests庫發送請求將網頁內容下載下來以后,并不會執行js代碼,這需要我們自己分析目標站點然后發起新的request請求,但是selenium模塊就可以執行js的操作。

安裝:

pip3 install requests

請求方式:主要用到的就get和post兩種

#各種請求方式:常用的就是requests.get()和requests.post()import requestsr = requests.get(’https://api.github.com/events’)r = requests.post(’http://httpbin.org/post’, data = {’key’:’value’})r = requests.put(’http://httpbin.org/put’, data = {’key’:’value’})r = requests.delete(’http://httpbin.org/delete’)r = requests.head(’http://httpbin.org/get’)r = requests.options(’http://httpbin.org/get’)

#GET請求HTTP默認的請求方法就是GET * 沒有請求體 * 數據必須在1K之內! * GET請求數據會暴露在瀏覽器的地址欄中GET請求常用的操作: 1. 在瀏覽器的地址欄中直接給出URL,那么就一定是GET請求 2. 點擊頁面上的超鏈接也一定是GET請求 3. 提交表單時,表單默認使用GET請求,但可以設置為POST#POST請求(1). 數據不會出現在地址欄中(2). 數據的大小沒有上限(3). 有請求體(4). 請求體中如果存在中文,會使用URL編碼!#!!!requests.post()用法與requests.get()完全一致,特殊的是requests.post()有一個data參數,用來存放請求體數據基于GET的請求方式一、基本請求的代碼

import requestsresponse=requests.get(’http://http://www.cnblogs.com/’)print(response.text)二、GET請求的參數

GET請求的參數放在url的問號后面,以鍵值對形式傳參

方式一:自行拼接參數(原理就是這樣,不過我們一般都用方式二的形式)

#在請求頭內將自己偽裝成瀏覽器,否則百度不會正常返回頁面內容import requestsresponse=requests.get(’https://www.baidu.com/s?wd=python&pn=1’, #請求頭信息 headers={ ’User-Agent’:’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36’, })print(response.text)#如果查詢關鍵詞是中文或者有其他特殊符號,則不得不進行url編碼后再拼接from urllib.parse import urlencodewd=’蒼老師’encode_res=urlencode({’k’:wd},encoding=’utf-8’)keyword=encode_res.split(’=’)[1]#拿到編碼后的字符串print(keyword)# 然后拼接成urlurl=’https://www.baidu.com/s?wd=%s&pn=1’ %keywordresponse=requests.get(url, headers={ ’User-Agent’:’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36’, })res1=response.text

方式二:利用params參數(原理就是底層封裝了方式一)

#上述操作可以用requests模塊的一個params參數搞定,本質還是調用urlencodefrom urllib.parse import urlencodewd=’egon老師’pn=1response=requests.get(’https://www.baidu.com/s’, #參數進行傳參,幫我們省去了urlencode這一步 params={ ’wd’:wd, ’pn’:pn }, headers={ ’User-Agent’:’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36’, })res2=response.text#驗證結果,打開a.html與b.html頁面內容一樣with open(’a.html’,’w’,encoding=’utf-8’) as f: f.write(res1) with open(’b.html’, ’w’, encoding=’utf-8’) as f: f.write(res2)params參數的使用三、請求頭headers

一般情況下,瀏覽器在發送GET請求的時候都會有請求頭,用于放置跟客戶端有關的信息。有些網站必須要有某些參數,這時我們在用爬蟲偽造瀏覽器發送GET請求時就要在headers參數下設置好請求頭中會攜帶的參數

常見請求頭:

#通常我們在發送請求時都需要帶上請求頭,請求頭是將自身偽裝成瀏覽器的關鍵,常見的有用的請求頭如下HostReferer #大型網站通常都會根據該參數判斷請求的來源User-Agent #客戶端Cookie #Cookie信息包含在請求頭里,requests模塊有單獨的參數來處理他,處理后headers={}內就可以不用放置

#添加headers(瀏覽器會識別請求頭,不加可能會被拒絕訪問,比如訪問https://www.zhihu.com/explore)import requestsresponse=requests.get(’https://www.zhihu.com/explore’)response.status_code #500#自己定制headersheaders={ ’User-Agent’:’Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36’,}respone=requests.get(’https://www.zhihu.com/explore’, headers=headers)print(respone.status_code) #200設置請求頭的方式四、cookie信息

有些要登錄才能實行的功能,我們就必須在發起請求的信息中帶上cookie,該cookie需要先由瀏覽器真實訪問后得到,不可偽造。但我們可以在瀏覽器真實訪問后將cookie信息復制出來,在我們爬蟲發起GET請求時傳入該參數即可

#登錄github,然后從瀏覽器中獲取cookies,以后就可以直接拿著cookie登錄了,無需輸入用戶名密碼#用戶名:egonlin 郵箱378533872@qq.com 密碼lhf@123import requestsCookies={ ’user_session’:’wGMHFJKgDcmRIVvcA14_Wrt_3xaUyJNsBnPbYzEL6L0bHcfc’,}response=requests.get(’https://github.com/settings/emails’, cookies=Cookies) #github對請求頭沒有什么限制,我們無需定制user-agent,對于其他網站可能還需要定制print(’378533872@qq.com’ in response.text) #True

然而,每次都要先打開瀏覽器訪問鏈接再講cookie復制出來是一個非常麻煩的事,真正的程序員怎么可以被這個給限制住。所以,我們就要用到requests模塊下的一個函數

import requests session = requests.session()

之后,我們每次發起GET請求的時候都用session代替requests即可,再也不必為傳cookie而煩惱啦。(從此忘記cookie也行哈哈哈)

示例代碼:

session.get(  ’https://passport.lagou.com/grantServiceTicket/grant.html’, headers={ ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’, ’Referer’: ’https://passport.lagou.com/login/login.html’, } )基于POST的請求方式

請求的代碼與GET相同,不過因為POST請求的參數放在請求體里,所以在傳參的時候會多一個data參數,用于放置請求的參數信息。

’’’一 目標站點分析 瀏覽器輸入https://github.com/login 然后輸入錯誤的賬號密碼,抓包 發現登錄行為是post提交到:https://github.com/session 而且請求頭包含cookie 而且請求體包含: commit:Sign in utf8:✓ authenticity_token:lbI8IJCwGslZS8qJPnof5e7ZkCoSoMn6jmDTsL1r/m06NLyIbw7vCrpwrFAPzHMep3Tmf/TSJVoXWrvDZaVwxQ== login:egonlin password:123二 流程分析 先GET:https://github.com/login拿到初始cookie與authenticity_token 返回POST:https://github.com/session, 帶上初始cookie,帶上請求體(authenticity_token,用戶名,密碼等) 最后拿到登錄cookie ps:如果密碼時密文形式,則可以先輸錯賬號,輸對密碼,然后到瀏覽器中拿到加密后的密碼,github的密碼是明文’’’import requestsimport re#第一次請求r1=requests.get(’https://github.com/login’)r1_cookie=r1.cookies.get_dict() #拿到初始cookie(未被授權)authenticity_token=re.findall(r’name='authenticity_token'.*?value='(.*?)'’,r1.text)[0] #從頁面中拿到CSRF TOKEN#第二次請求:帶著初始cookie和TOKEN發送POST請求給登錄頁面,帶上賬號密碼data={ ’commit’:’Sign in’, ’utf8’:’✓’, ’authenticity_token’:authenticity_token, ’login’:’317828332@qq.com’, ’password’:’alex3714’}r2=requests.post(’https://github.com/session’, data=data, cookies=r1_cookie )login_cookie=r2.cookies.get_dict()#第三次請求:以后的登錄,拿著login_cookie就可以,比如訪問一些個人配置r3=requests.get(’https://github.com/settings/emails’,cookies=login_cookie)print(’317828332@qq.com’ in r3.text) #True自動登錄github(自己處理cookie信息)手動處理cookie后實現自動登錄github

import requestsimport resession=requests.session()#第一次請求r1=session.get(’https://github.com/login’)authenticity_token=re.findall(r’name='authenticity_token'.*?value='(.*?)'’,r1.text)[0] #從頁面中拿到CSRF TOKEN#第二次請求data={ ’commit’:’Sign in’, ’utf8’:’✓’, ’authenticity_token’:authenticity_token, ’login’:’317828332@qq.com’, ’password’:’alex3714’}r2=session.post(’https://github.com/session’, data=data, )#第三次請求r3=session.get(’https://github.com/settings/emails’)print(’317828332@qq.com’ in r3.text) #True使用requests.session()自動幫我們處理cookie信息后自動登錄GitHub

補充說明

requests.post(url=’xxxxxxxx’, data={’xxx’:’yyy’}) #沒有指定請求頭,#默認的請求頭:application/x-www-form-urlencoed#如果我們自定義請求頭是application/json,并且用data傳值, 則服務端取不到值requests.post(url=’’, data={’’:1,}, headers={ ’content-type’:’application/json’ })requests.post(url=’’, json={’’:1,}, ) #默認的請求頭:application/json響應Response

response是響應信息,具體屬性如下

import requestsrespone=requests.get(’http://www.jianshu.com’)# respone屬性print(respone.text) #包含html內容的字符串print(respone.content)#bytes類型的字符串print(respone.status_code)#狀態碼200print(respone.headers) #請求頭信息print(respone.cookies) #COOKIE對象print(respone.cookies.get_dict())#封裝了cookie參數的字典{’locale’: ’zh-CN’}print(respone.cookies.items())#封裝了cookie參數的列表[(’locale’, ’zh-CN’)]print(respone.url)#url地址https://www.jianshu.com/print(respone.history)print(respone.encoding)#編碼utf-8#關閉:response.close()from contextlib import closingwith closing(requests.get(’xxx’,stream=True)) as response: for line in response.iter_content(): pass#將內容一行一行寫到文件中

有時網頁不是utf-8的編碼,所以我們要解決編碼的問題

#編碼問題import requestsresponse=requests.get(’http://www.autohome.com/news’)# response.encoding=’gbk’ #汽車之家網站返回的頁面內容為gb2312編碼的,而requests的默認編碼為ISO-8859-1,如果不設置成gbk則中文亂碼print(response.text)獲取二進制數據和二進制流

圖片和視頻我們獲取下來時是二進制數據,這時我們要用wb的形式寫到本地。但有時視頻很大,我們一下子加載到內存再去寫入本地是不合理的,所以我們會用到二進制流

寫二進制數據:

import requestsresponse=requests.get(’https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1509868306530&di=712e4ef3ab258b36e9f4b48e85a81c9d&imgtype=0&src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F11385343fbf2b211e1fb58a1c08065380dd78e0c.jpg’)with open(’a.jpg’,’wb’) as f: f.write(response.content)

二進制流:

#stream參數:一點一點的取,比如下載視頻時,如果視頻100G,用response.content然后一下子寫到文件中是不合理的import requestsresponse=requests.get(’https://gss3.baidu.com/6LZ0ej3k1Qd3ote6lo7D0j9wehsv/tieba-smallvideo-transcode/1767502_56ec685f9c7ec542eeaf6eac93a65dc7_6fe25cd1347c_3.mp4’, stream=True)with open(’b.mp4’,’wb’) as f: for line in response.iter_content(): f.write(line)解析json數據:

#解析jsonimport requestsresponse=requests.get(’http://httpbin.org/get’)import jsonres1=json.loads(response.text) #太麻煩res2=response.json() #直接獲取json數據print(res1 == res2) #TrueRedirection and History

By default Requests will perform location redirection for all verbs except HEAD.We can use the history property of the Response object to track redirection.The Response.history list contains the Response objects that were created in order to complete the request. The list is sorted from the oldest to the most recent response.For example, GitHub redirects all HTTP requests to HTTPS:>>> r = requests.get(’http://github.com’)>>> r.url’https://github.com/’>>> r.status_code>>> r.history[<Response [301]>]If you’re using GET, OPTIONS, POST, PUT, PATCH or DELETE, you can disable redirection handling with the allow_redirects parameter:>>> r = requests.get(’http://github.com’, allow_redirects=False)>>> r.status_code>>> r.history[]If you’re using HEAD, you can enable redirection as well:>>> r = requests.head(’http://github.com’, allow_redirects=True)>>> r.url’https://github.com/’>>> r.history[<Response [301]>]先看官網的解釋官網解釋(強行裝作看得懂的樣子)

import requestsimport re#第一次請求r1=requests.get(’https://github.com/login’)r1_cookie=r1.cookies.get_dict() #拿到初始cookie(未被授權)authenticity_token=re.findall(r’name='authenticity_token'.*?value='(.*?)'’,r1.text)[0] #從頁面中拿到CSRF TOKEN#第二次請求:帶著初始cookie和TOKEN發送POST請求給登錄頁面,帶上賬號密碼data={ ’commit’:’Sign in’, ’utf8’:’✓’, ’authenticity_token’:authenticity_token, ’login’:’317828332@qq.com’, ’password’:’alex3714’}#測試一:沒有指定allow_redirects=False,則響應頭中出現Location就跳轉到新頁面,r2代表新頁面的responser2=requests.post(’https://github.com/session’, data=data, cookies=r1_cookie )print(r2.status_code) #200print(r2.url) #看到的是跳轉后的頁面print(r2.history) #看到的是跳轉前的responseprint(r2.history[0].text) #看到的是跳轉前的response.text#測試二:指定allow_redirects=False,則響應頭中即便出現Location也不會跳轉到新頁面,r2代表的仍然是老頁面的responser2=requests.post(’https://github.com/session’, data=data, cookies=r1_cookie, allow_redirects=False )print(r2.status_code) #302print(r2.url) #看到的是跳轉前的頁面https://github.com/sessionprint(r2.history) #[]利用github登錄后跳轉到主頁面的例子來驗證它進階知識點

其實學會了以上的知識,就已經可以做到用requests去爬網頁了。下面的知識是高級用法,但其實并不難。

一、SSL證書驗證

很多大網站用的都是https,而https是要求訪問者攜帶證書的,但是其實有些不用證書也可以訪問,大多數情況都是可以攜帶也可以不攜帶證書比如知乎和百度等

但有些是有硬性要求的,則必須帶,比如對于定向的用戶,拿到證書后才有權限訪問。例如12306

這個時候我們在用爬蟲發起請求的時候就需要做一些手腳啦

#證書驗證(大部分網站都是https)import requestsrespone=requests.get(’https://www.12306.cn’) #如果是ssl請求,首先檢查證書是否合法,不合法則報錯,不允許訪問#改進1:去掉報錯,能訪問但是會報警告,因為畢竟我們沒有證書import requestsrespone=requests.get(’https://www.12306.cn’,verify=False) #verify參數改成false就不驗證證書,報警告,能訪問,返回200print(respone.status_code)#200#改進2:去掉報錯,并且去掉警報信息,與上步沒啥太大區別import requestsfrom requests.packages import urllib3urllib3.disable_warnings() #關閉警告respone=requests.get(’https://www.12306.cn’,verify=False)print(respone.status_code)#改進3:加上證書#很多網站都是https,但是不用證書也可以訪問,大多數情況都是可以攜帶也可以不攜帶證書#知乎百度等都是可帶可不帶#有硬性要求的,則必須帶,比如對于定向的用戶,拿到證書后才有權限訪問某個類似12306的特定網站import requestsrespone=requests.get(’https://www.12306.cn’, cert=(’/path/server.crt’, ’/path/key’))#證書存放在本地print(respone.status_code)二、代理

有些時候,我們用爬蟲訪問某網站請求的太頻繁時人家網站會檢測到你的不法行為然后將你的ip封掉,這樣你就不能繼續做不可告人的事啦。怎么辦呢?我們可以用到代理。

代理的原理是:我們先發送請求到代理的IP上,然后由代理幫忙發送。代理IP可以在網上搜,一搜一大把,但代理也是有時效性的,盡量用最新鮮的,因為老舊的可能已經被人用爛然后早就被封了。。

使用http代理的栗子:

#官網鏈接: http://docs.python-requests.org/en/master/user/advanced/#proxies#代理設置:先發送請求給代理,然后由代理幫忙發送import requests#代理的參數proxies={ ’http’:’http://egon:123@localhost:9743’,#帶用戶名密碼的代理,@符號前是用戶名與密碼,@符號后是IP和端口 ’http’:’http://localhost:9743’,#不帶用戶名密碼的代理 ’https’:’https://localhost:9743’,}respone=requests.get(’https://www.12306.cn’, proxies=proxies)print(respone.status_code)

擴展:socks代理

Socks 代理與應用層代理、 HTTP 層代理不同,Socks代理只是簡單地傳遞數據包,而不必關心是何種應用協議(比如FTP、HTTP和NNTP請求)。所以,Socks代理比其他應用層代理要快得多。它通常綁定在代理服務器的1080端口上。如果在企業網或校園網上,需要透過防火墻或通過代理服務器訪問Internet就可能需要使用SOCKS。一般情況下,對于撥號上網用戶都不需要使用它。我們常用的代理服務器仍然是專門的http代理,它和SOCKS是不同的。因此,能瀏覽網頁不等于您一定可以通過SOCKS訪問Internet。 常用的防火墻,或代理軟件都支持SOCKS,但需要其管理員打開這一功能。為了使用socks,需要了解一下內容:① SOCKS服務器的IP地址② SOCKS服務所在的端口③ 這個SOCKS服務是否需要用戶認證?如果需要,就要向網絡管理員申請一個用戶和口令知道了上述信息,您就可以把這些信息填入“網絡配置”中,或者在第一次登記時填入,您就可以使用socks代理了。不過我們在爬蟲階段不必了解那么多,我們只要知道用http代理的時候必須區分開是http請求還是https請求,因為代碼是不同的。而利用socks代理的時候就可以五十這些,統一使用socks。

示例代碼:

#支持socks代理,安裝:pip install requests[socks]import requests#用socks代替了http和https,無需特意做區分proxies = { ’http’: ’socks5://user:pass@host:port’, ’https’: ’socks5://user:pass@host:port’}respone=requests.get(’https://www.12306.cn’, proxies=proxies)print(respone.status_code)三、超時時間

有時候網絡不好或者我們有相應的需求的情況下,我們要為我們的網頁加載設置一個超時時間。在過了超時時間后網頁還沒加載完就關閉此次進程

#兩種超時設置:float or tuple#timeout=0.1 #代表接收數據的超時時間#timeout=(0.1,0.2)#0.1代表鏈接的超時時間 0.2代表接收數據的超時時間import requestsrespone=requests.get(’https://www.baidu.com’, timeout=0.01)四、認證設置(極不常用,了解即可)

有些網站的登錄框是像alert一樣彈出來的,這種類型的就無法從HTML中獲取到的,但其本質原理還是拼接成請求頭發送的。

注:一般網站都不會使用這種形式的登錄界面

r.headers[’Authorization’] = _basic_auth_str(self.username, self.password)

# 一般的網站都不用默認的加密方式,都是自己寫# 那么我們就需要按照網站的加密方式,自己寫一個類似于_basic_auth_str的方法得到加密字符串后添加到請求頭# r.headers[’Authorization’] =func(’.....’)#默認的加密方式(不過通常網站都不會用默認的加密設置)import requestsfrom requests.auth import HTTPBasicAuthr=requests.get(’xxx’,auth=HTTPBasicAuth(’user’,’password’))print(r.status_code)#HTTPBasicAuth可以簡寫為authimport requestsr=requests.get(’xxx’,auth=(’user’,’password’))print(r.status_code)五、異常處理

異常處理就是防止程序發生異常時報錯終止的

#異常處理import requestsfrom requests.exceptions import * #可以查看requests.exceptions獲取異常類型try: r=requests.get(’http://www.baidu.com’,timeout=0.00001)except ReadTimeout: print(’===:’)except ConnectionError: #網絡不通 print(’-----’)except Timeout: print(’aaaaa’)except RequestException: print(’Error’)六、上傳文件

上傳文件的操作很簡單,但是其實我們在爬蟲的時候基本不會用到上傳,我們都是爬取的。

import requestsfiles={’file’:open(’a.jpg’,’rb’)}respone=requests.post(’http://httpbin.org/post’,files=files)print(respone.status_code)

formdata格式上傳圖片

import requestsfrom urllib3 import encode_multipart_formdatapath = ’test1.png’# 上傳圖片url = ’xxxxxx’data = {’upload’:(path, open(path, ’rb’).read())}header = {}encode_data = encode_multipart_formdata(data)file_data = encode_data[0]header[’Content-Type’] = encode_data[1]r = requests.post(url, headers=header, data=file_data)簡單應用

爬取拉勾網職位信息并自動投遞簡歷:

import requestsimport resession = requests.session()# 第一步:訪問登陸頁,拿到X_Anti_Forge_Token,X_Anti_Forge_Code# 1、請求url:https://passport.lagou.com/login/login.html# 2、請求方法:GET# 3、請求頭:# User-agentr1 = session.get(’https://passport.lagou.com/login/login.html’, headers={ ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’, }, )X_Anti_Forge_Token = re.findall('X_Anti_Forge_Token = ’(.*?)’', r1.text, re.S)[0]X_Anti_Forge_Code = re.findall('X_Anti_Forge_Code = ’(.*?)’', r1.text, re.S)[0]# print(X_Anti_Forge_Token,X_Anti_Forge_Code)# 第二步:登陸# 1、請求url:https://passport.lagou.com/login/login.json# 2、請求方法:POST# 3、請求頭:# cookie# User-agent# Referer:https://passport.lagou.com/login/login.html# X-Anit-Forge-Code:53165984# X-Anit-Forge-Token:3b6a2f62-80f0-428b-8efb-ef72fc100d78# X-Requested-With:XMLHttpRequest# 4、請求體:# isValidate:true# username:18611453110# password:70621c64832c4d4d66a47be6150b4a8e# request_form_verifyCode:’’# submit:’’r2 = session.post(’https://passport.lagou.com/login/login.json’, headers={ ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’, ’Referer’: ’https://passport.lagou.com/login/login.html’, ’X-Anit-Forge-Code’: X_Anti_Forge_Code, ’X-Anit-Forge-Token’: X_Anti_Forge_Token, ’X-Requested-With’: ’XMLHttpRequest’ }, data={ 'isValidate': True, ’username’: ’18611453110’, ’password’: ’70621c64832c4d4d66a47be6150b4a8e’, ’request_form_verifyCode’: ’’, ’submit’: ’’ } )# 第三步:授權# 1、請求url:https://passport.lagou.com/grantServiceTicket/grant.html# 2、請求方法:GET# 3、請求頭:# User-agent# Referer:https://passport.lagou.com/login/login.htmlr3 = session.get(’https://passport.lagou.com/grantServiceTicket/grant.html’, headers={ ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’, ’Referer’: ’https://passport.lagou.com/login/login.html’, } )# 第四步:驗證r4 = session.get(’https://www.lagou.com/resume/myresume.html’, headers={ ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’, } )# print(’18611453110’ in r4.text)# 第五步:篩選職位信息# 請求url:https://www.lagou.com/jobs/list_java%E9%AB%98%E7%BA%A7%E5%BC%80%E5%8F%91# 請求方法:GET# 請求頭:# User-Agent# 請求參數:# gj:3年及以下# px:default# yx:25k-50k# city:北京from urllib.parse import urlencoderes = urlencode({’k’: ’java高級開發’}, encoding=’utf-8’).split(’=’)[-1]url = ’https://www.lagou.com/jobs/list_’ + res## r5 = session.get(url,# headers={# ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’,# },# params={# ’gj’: ’3年及以下’,# ’px’: ’default’,# ’yx’: ’25k-50k’,# ’city’: ’北京’# }# )## print(r5.text)#請求url:https://www.lagou.com/jobs/positionAjax.json#請求方法:POST#請求頭# Referer# User-Agent#請求體: # first:true # pn:1 # kd:java高級開發#請求參數# params={# ’gj’: ’3年及以下’,# ’px’: ’default’,# ’yx’: ’25k-50k’,# ’city’: ’北京’,# ’needAddtionalResult’:False,# ’isSchoolJob’:0# }r6=session.post(’https://www.lagou.com/jobs/positionAjax.json’, headers={ ’Referer’:url, ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’, }, data={ ’first’:True, ’pn’:2, ’kd’:’java高級開發’ }, params={ ’gj’: ’3年及以下’, ’px’: ’default’, ’yx’: ’25k-50k’, ’city’: ’北京’, ’needAddtionalResult’: False, ’isSchoolJob’: 0 } )from pprint import pprint# print(r6.json())comapines_list=r6.json()[’content’][’positionResult’][’result’]for comapiny in comapines_list: positionId=comapiny[’positionId’] company_link=’https://www.lagou.com/jobs/{pos_id}.html’.format(pos_id=positionId) companyShortName = comapiny[’companyShortName’] positionName = comapiny[’positionName’] salary = comapiny[’salary’] print(’’’ 詳情連接:%s 公司名:%s 職位名:%s 薪資:%s ’’’ %(company_link,companyShortName,positionName,salary)) #第七步:訪問詳情頁,拿到X_Anti_Forge_Token,X_Anti_Forge_Code # 請求url:詳情頁地址 # 請求方式:GET # 請求頭:User-Agent r7=session.get(company_link,headers={ ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’,}) X_Anti_Forge_Token = re.findall('X_Anti_Forge_Token = ’(.*?)’', r7.text, re.S)[0] X_Anti_Forge_Code = re.findall('X_Anti_Forge_Code = ’(.*?)’', r7.text, re.S)[0] # print(X_Anti_Forge_Token,X_Anti_Forge_Code) #第八步:投遞簡歷 #請求url:https://www.lagou.com/mycenterDelay/deliverResumeBeforce.json #請求方式:POST #請求頭: #Referer:詳情頁地址 #User-agent #X-Anit-Forge-Code:53165984 #X-Anit-Forge-Token:3b6a2f62-80f0-428b-8efb-ef72fc100d78 #X-Requested-With:XMLHttpRequest #請求體: # positionId:職位ID # type:1 # force:true session.post(’https://www.lagou.com/mycenterDelay/deliverResumeBeforce.json’, headers={ ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’, ’Referer’: company_link, ’X-Anit-Forge-Code’: X_Anti_Forge_Code, ’X-Anit-Forge-Token’: X_Anti_Forge_Token, ’X-Requested-With’: ’XMLHttpRequest’ }, data={ ’positionId’:positionId, ’type’:1, ’force’:True } ) print(’%s 投遞成功’ %(companyShortName))

爬取獵聘網職位信息(優化)

import reimport requestssession=requests.session()#可以幫助我們自動處理cookie信息,我們不用再手動穿cookie的值# 第一步:訪問登陸頁,這里的登錄頁就是首頁# 1、請求url:https://www.liepin.com/# 2、請求方法:GET# 3、請求頭:# User-agentr1_url=’https://www.liepin.com/’user_agent=’Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36’# 第二步:登陸# 1、請求url:https://passport.liepin.com/c/login.json?__mn__=user_login# 2、請求方法:POST# 3、請求頭:# cookie# User-agent# Referer:https://passport.liepin.com/ajaxproxy.html# X-Alt-Referer:https://www.liepin.com/# X-Requested-With:XMLHttpRequest# 4、請求體:# user_pwd:5d353bc2f5474201c8a2f1891735999a# version:# user_login:15011316546# chk_remember_pwd:onr2_url=’https://passport.liepin.com/c/login.json?__mn__=user_login’r2_header_dict={ ’User-agent’:user_agent, ’Referer’:’https://passport.liepin.com/ajaxproxy.html’, ’X-Alt-Referer’:’https://www.liepin.com/’, ’X-Requested-With’:’XMLHttpRequest’}r2_form_data={ ’user_pwd’:’5d353bc2f5474201c8a2f1891735999a’, ’user_login’:’15011316546’, ’chk_remember_pwd’:’on’}# 第三步:篩選職位信息# 請求url:https://www.liepin.com/zhaopin/# 請求方法:GET# 請求頭:# User-Agent# 請求參數:# salary:15$20# dqs:010# key:前臺r3_url=’https://www.liepin.com/zhaopin/’r3_header_dict={ ’User-Agent’:user_agent}# r3_params={# ’salary’:’10$20’,# ’dqs’:’010’,# ’key’:’前臺’# }r3_params={ ’salary’:’10$20’, ’dqs’:’070020’, ’key’:’Python開發’}#第四步 正則匹配 拿到頁面中所有的職位數據,寫入文件中re_rule = ’class='icon icon-yellow-triangle'.*?class='job-info'.*?title='(.*?)'.*?href='http://www.gepszalag.com/bcjs/(.*?)' rel='external nofollow' .*?title='(.*?)'.*?class='company-name'.*?title='(.*?)'.*?target='_blank'>(.*?)</a>’txt = ’獵聘網招聘(Python1).txt’#封裝,便于傳參dict={ ’r1_url’:r1_url, ’user_agent’:user_agent, ’r2_url’:r2_url, ’r2_header_dict’:r2_header_dict, ’r2_form_data’:r2_form_data, ’r3_url’:r3_url, ’r3_header_dict’:r3_header_dict, ’r3_params’:r3_params, ’re_rule’:re_rule, ’txt’:txt}def spider(**kwargs): #第一步 r1=session.get(r1_url, headers={ ’Referer’:’https://www.liepin.com/’, ’User-Agent’:user_agent } ) #第二步 r2=session.post(r2_url, headers=r2_header_dict, data=r2_form_data ) # 第三步3 r3=session.get( r3_url, headers=r3_header_dict, params=r3_params ) print(’國內某知名投行’ in r3.text) #第四步 result=re.findall(re_rule,r3.text,re.S) for i in result: a=''' 招聘職位:%s 招聘鏈接:%s 薪資及要求:%s 公司名稱:%s 公司類型:%s '''%i with open(txt, ’a’,encoding=’UTF-8’) as f: f.write(a)if __name__ == ’__main__’: spider(**dict)

以上就是python requests庫的使用的詳細內容,更多關于python requests庫的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产福利一区二区 | 亚洲中出| 欧美中文字幕在线 | 成人综合在线观看 | 国产精彩视频 | 日韩一区欧美 | 最新中文字幕久久 | 电影k8一区二区三区久久 | 久久99精品久久久 | 成人在线国产 | 日韩毛片一级 | 一区二区日韩 | 国产区第一页 | 色婷婷国产精品综合在线观看 | 国产精品视频一区二区三区 | 黄色网亚洲 | 久久久久久成人 | 日本三级电影免费 | 国产成人综合av | 亚洲三区在线观看 | 亚洲电影免费 | 精品国产一区二区三区成人影院 | 欧美99 | 中文字幕高清视频 | 超碰在线观看97 | 91精品国产乱码久久久久久 | 国产日韩高清在线 | 私人毛片免费高清视频 | 91亚洲国产成人久久精品网站 | 国产一区二区三区四 | 天天躁日日躁aaaaxxxx | 亚洲一区视频在线 | 国产一级视频免费观看 | 国产在线区 | 在线观看免费视频日韩 | 高清免费av | 中文字幕第9页 | 国产91视频在线观看 | 国产成人久久精品77777 | 国产av毛片 | 国产精品久久久久久久久久东京 | 91av国产视频 | 精品国产一区二区三区久久久蜜 | 免费一级毛片 | 看真人视频a级毛片 | 国产精品高潮呻吟av久久4虎 | 最新国产视频 | 97国产在线视频 | 亚洲人成人一区二区在线观看 | 免费黄色小片 | 在线永久免费观看日韩a | 一级毛片在线免费看 | 日韩免费观看视频 | 蜜月va乱码一区二区三区 | 免费亚洲视频 | 成人h动漫免费观看网站 | 精品国产髙清在线看国产毛片 | 91在线视频免费观看 | 一区国产视频 | 日韩精品av一区二区三区 | 午夜免费| 欧美成人一区二免费视频软件 | 久久高清一区 | www.久久.com | 在线播放91 | 男人的天堂在线视频 | 在线看免费观看日本 | 精品少妇一区二区三区日产乱码 | 欧美三级电影在线播放 | 一级黄色片网站 | 色性网| 日韩成人在线播放 | 欧美三区| 亚洲欧美在线一区二区 | 日韩一区二区三区在线观看 | 婷婷丁香激情 | 一级免费毛片 | 91久久久久久 | 一区二区色 | 亚洲国产高清高潮精品美女 | 狠狠久久伊人中文字幕 | 久久久久久久av | 男人天堂网av | 国产成人精品免费视频大全 | 国产在线国产 | 乳色吐息在线观看 | 99热在线播放 | 曰韩毛片 | 亚洲精品电影 | 国产成人精品免高潮在线观看 | 国产成人综合在线 | 一级毛片网| 日韩av一区二区在线观看 | 欧美日韩在线精品 | 日韩在线短视频 | 99久久久无码国产精品 | 最近中文字幕在线视频1 | 中文字幕在线视频免费观看 | aⅴ色国产 欧美 | 欧美日韩一区二区在线 | 国产一区二区三区在线 | 91精品国产一区二区三区四区在线 | 国产精品视频免费观看 | 亚洲天堂中文字幕 | 综合网av | 少妇久久久 | 日韩免费高清视频 | 91精品国产91久久久久久最新 | 久久高清国产 | 欧美日韩激情在线 | 91免费在线播放 | 可以免费看黄的网站 | 君岛美绪一区二区三区在线视频 | 欧美亚洲视频 | 国产传媒毛片精品视频第一次 | 日本最新免费二区 | 毛片免费视频 | 久久这里只有精品首页 | 国产亚洲网站 | 日本亚洲欧美 | 欧美日韩一区二区视频在线观看 | 久久精品免费一区二区三区 | 久久国产经典视频 | 国产午夜久久久久 | 国产乱码一区二区三区在线观看 | 91视频观看 | 龙珠z中文版普通话 | 色5月婷婷丁香六月 | 羞羞视频在线免费 | 精品一区二区三区免费视频 | 欧美一级免费 | 亚洲免费一区二区 | 亚洲一区二区三区视频免费观看 | 亚洲一区视频在线播放 | 免费av电影在线观看 | 亚洲骚片 | 一级电影免费看 | 国产大片aaa | 亚洲精品久久久久久一区二区 | 国产精品美女久久久久久久网站 | 久久色av | 欧美中文在线 | 国产精品日本欧美一区二区三区 | www.午夜视频 | 亚洲国产精品麻豆 | 免费中文字幕 | 亚洲精品亚洲人成人网 | 精品国产一区二区三区不卡蜜臂 | 精品无码久久久久久国产 | 精品一区二区三区四区五区 | 精品久久久久久久久久久久久久 | 97国产一区二区 | 色久天堂| 亚洲免费成人 | 欧美日韩精品一二区 | 久久99精品久久久久久园产越南 | 国产激情午夜 | 亚洲天堂一区二区 | 国产精品s色 | av影音在线 | 亚洲人在线播放 | 午夜伦理影院 | 亚洲国产日韩在线 | 伊人在线| 成人高清网站 | 在线日韩视频 | 黄色一级免费大片 | 中文字幕亚洲精品 | a免费视频 | 日韩久久一区二区 | 国产毛片在线看 | 91麻豆产精品久久久久久 | 日韩精品免费 | 欧美一区二区视频 | 中文字幕国产视频 | 成人a在线视频免费观看 | 亚洲免费网| 欧美精品成人一区二区三区四区 | 91国自产精品中文字幕亚洲 | 久久99精品视频 | 欧美一区二区三 | 欧美一区二区三区免费观看视频 | 国产精品www| 免费观看一级毛片 | 久久免费精品 | 色综合久久一区二区三区 | 91手机精品视频 | 欧美涩涩网站 | 久久精品视频亚洲 | a一级片在线观看 | 亚洲精品福利 | 黄色在线免费观看 | 中文字幕在线导航 | 81精品国产乱码久久久久久 | 国产亚洲精品美女久久久久久久久久 | 国产福利91精品一区二区 | 91久久精品一区二区三区 | 伊人精品在线 | 少妇看av一二三区 | 精品国产31久久久久久 | 成人黄色a | 久久成人免费视频 | 欧美中文在线 | 免费毛片a线观看 | 国产中文一区 | 天天拍天天干天天操 | 欧美精品成人一区二区三区四区 | 亚洲欧美中文日韩在线v日本 | 国产黄色播放 | 99亚洲国产| 日韩成人影视 | 色精品 | 国产精品18 | 99免费在线播放99久久免费 | 中文字幕日韩久久 | 亚洲精品二区 | 女人爽到高潮aaaa电影 | 亚洲国产精品一区二区三区 | www精品美女久久久tv | 在线国产一区 | 免费的av网站 | 国产美女网站视频 | 精品九九 | 亚洲视频成人 | 天天看天天爽 | 97爱爱爱 | 日韩一区二区在线观看 | 一区二区不卡 | 日本黄色一级电影 | 欧美久久久久 | 中文字幕亚洲欧美日韩在线不卡 | 9久久精品| 色综合视频 | 国产精品国产 | 亚洲97| 免费午夜电影 | 国产日韩精品入口 | 天堂久久爱资源站www | 99视频在线播放 | 狠狠艹| 欧美日韩激情一区二区三区 | 久久精品免费 | 久久精品一区二区三区四区 | 日韩激情综合 | 综合视频一区二区三区 | www精品美女久久久tv | 国产美女永久免费无遮挡 | 中文在线播放 | 国产精品一区二区av | 欧美性网| 国产情侣免费视频 | 精品成人在线视频 | 视频一区二区国产 | 久在线视频 | 日韩在线一区二区三区 | 中文字幕不卡在线88 | 久久久久亚洲一区二区三区 | 国产精品毛片久久久久久久 | 久久生活片 | 亚洲视频在线观看免费 | 欧美性影院 | 99日韩| 91视频在线看 | 日本在线视频观看 | 国产精品自拍视频网站 | 国产精品一区二区在线观看 | 羞羞视频免费观看入口 | 一级毛片视频 | 国产一区二区视频在线观看 | sese综合| 欧美一级免费 | av官网在线| 亚洲国内精品 | 国产成人一区 | 日韩中文字幕在线播放 | 91在线视频免费观看 | 97超碰免费 | 7777av | 一区二区三区精品视频免费看 | 四虎影院免费网址 | 伊人天天操| 亚洲毛片在线观看 | 日日摸天天爽天天爽视频 | 午夜精品久久久久久久久久久久久 | 精品日韩一区二区三区 | 不卡一区 | 久久99精品国产91久久来源 | 国产区视频在线观看 | 91精品国产综合久久久久久蜜月 | 中文字幕在线观看第一页 | 久久精品欧美一区二区三区麻豆 | 成人妇女免费播放久久久 | 国产欧美精品一区二区 | 黄网站色大毛片 | 国产精品久久久久久久久久10秀 | 麻豆亚洲| 国内精品国产成人国产三级粉色 | 91精品国产欧美一区二区 | 91视频大全 | 天天爽视频 | 日韩欧美一区二区三区 | 亚洲资源在线 | 精品少妇一区二区三区在线播放 | 在线不卡一区 | 国产嫩草91 | 伊人青青操 | 久久免费福利视频 | 成人看片在线观看 | 激情一区 | 国产精品成人一区二区三区 | 九九久久久 | 久久综合一区二区 | 色播开心网 | 91免费看电影| 国产精品成人一区二区三区夜夜夜 | 一区二区三区精品 | 国产一级视频在线观看 | 久久女人网 | 欧美一区二区三区在线视频 | 亚洲第一免费网站 | 日韩一级片| 免费黄在线观看 | 久久久久久久久久一区二区 | 日本福利网站 | 99re视频| 精品免费国产 | 精品视频在线免费观看 | 成人免费一区二区三区视频网站 | 日本二区在线观看 | 亚洲国产精品久久久久婷婷老年 | www久久精品| 国产一区二区精品在线观看 | 深夜福利1000 | 国产福利在线观看视频 | 激情久久av一区av二区av三区 | 婷婷国产 | 黄色片网站在线看 | 97视频人人澡人人爽 | 午夜艹| 99久热在线精品视频观看 | 精品伦精品一区二区三区视频 | 狠狠搞狠狠操 | 国产一区免费 | 亚洲午夜视频 | 色乱码一区二区三区网站 | 欧美专区在线观看 | 国产色视频网站 | 久久精品a级毛片 | 日韩2020狼一二三 | 免费的黄视频 | 在线观看日韩av | 国产精品久久电影观看 | 精品美女在线 | 欧美99 | 午夜影院在线 | 成人欧美一区二区三区在线播放 | 国产精品九九久久99视频 | 亚洲aⅴ天堂av在线电影软件 | 国产精品国产三级国产aⅴ入口 | 国内精品国产成人国产三级粉色 | 99国产精品 | 欧美日韩在线视频一区 | 国产综合亚洲精品一区二 | 一区免费 | 成人在线观看一区 | 正在播放国产一区 | 国产一区在线视频 | 北条麻妃国产九九九精品小说 | 2018自拍偷拍 | 在线精品自拍 | 影音先锋国产 | 天天操天天干天天爽 | 久久久久久久久久久网站 | 久久综合一区 | 色综合久久一区二区三区 | 操操操操操操操 | 国产高清视频一区二区 | 一区二区三区免费 | 亚洲欧洲无码一区二区三区 | 视频网站免费观看 | 91亚洲福利 | 日韩在线| av不卡在线播放 | 色婷婷一二三 | 久久久久久99| 91精品国产综合久久福利软件 | 国产日韩成人 | 午夜专区| 自拍偷拍专区 | 国产无套一区二区三区久久 | 日韩精品一区二区三区中文在线 | av免费在线观看网站 | 欧美日本免费一区二区三区 | 国产精品久久久久免费 | 一区二区在线 | 中文字幕乱码一区二区三区 | 99这里只有精品 | 91在线中文字幕 | 国产 在线 | 日韩 | 久久精品一区 | 欧洲精品| 在线只有精品 | 国产免费一区二区三区 | 久久91 | 日韩视频免费在线播放 | 成人精品鲁一区一区二区 | 伊人激情综合 | 国产成人精品一区二区三区四区 | 国产一区二区三区视频在线观看 | 欧洲美女7788成人免费视频 | 亚洲国产精品成人 | 91精品一区二区三区久久久久久 | 色婷婷av久久久久久久 | 久久99精品一区二区三区三区 | 午夜久久久久 | 我要看a级毛片 | 91在线免费看 | av不卡电影在线观看 | 国产黄色一级大片 | 成人免费毛片嘿嘿连载视频 | 国产精品成人观看视频国产奇米 | 欧美极品一区 | 中文字幕av亚洲精品一部二部 | 久久国产精品99久久久久久老狼 | 国产伦精品一区二区 | 亚洲精品中文字幕 | 91在线 | 亚洲 | 婷婷色国产偷v国产偷v小说 | 久久久久女人精品毛片九一韩国 | 久久精品国产99 | 成人精品鲁一区一区二区 | 一区二区三区在线免费观看 | 久久a视频 | 午夜影院免费视频 | 91精品国产高清久久久久久久久 | 亚洲网站色| 在线观看国产视频 | 国产成人在线一区二区 | 国产精品网站在线观看 | 国产精品久久久久久亚洲调教 | 精品久久久久久久人人人人传媒 | 亚洲一区二区视频 | 日韩一区中文字幕 | 91中文视频 | 国产激情91久久精品导航 | 国产亚洲精品成人av久久影院 | 色偷偷噜噜噜亚洲男人 | 99久久免费视频在线观看 | 男人的天堂中文字幕 | 亚洲色图偷拍视频 | 男女羞羞视频网站 | 黄免费观看 | 亚洲三区视频 | 欧洲亚洲一区 | 久久久久综合 | 亚洲精品久久久久久久久久久 | 一区二区精品视频在线观看 | 精品成人| 亚洲精品国产a久久久久久 国产毛片毛片 | 伊人激情综合 | 午夜免| 91视频国产一区 | 亚洲第一页中文字幕 | 婷婷精品 | 黄色一级在线播放 | 一区二区三区日本 | 91精品久久久久久久 | 成人黄色一区 | 国产精品二区一区 | 天天看片天天操 | 日韩视频一区二区三区 | 丁香六月av | 久久精品亚洲欧美日韩精品中文字幕 | 日韩精品中文字幕一区二区三区 | 天堂av一区 | 日韩av高清在线 | 一区二区三区久久 | 在线观看亚洲 | 亚洲三区在线观看 | 亚洲视频在线观看网址 | 国产欧美综合一区二区三区 | 免费国产一区 | 日韩欧美在线免费观看 | 日韩国产欧美精品 | 成人激情视频 | 欧美日韩成人一区 | 真人女人一级毛片免费播放 | 国产成人av在线 | 亚洲视频综合 | 成人一级片在线观看 | 伊人网网站 | 极品久久| 成人高清视频免费观看 | 国产乱码精品一区二区三区av | 羞羞视频在线观看入口 | 国产亚洲精品v | 免费成人av网站 | 伊人av超碰久久久麻豆 | 视频精品一区二区三区 | 不卡视频一区 | 亚洲毛片在线 | 亚洲天堂第一页 | 亚洲成人免费在线 | 嫩草视频在线观看免费 | 黄色一级片在线看 | 久日精品 | 国产成人午夜 | 国产精品视频一区二区三区 | 久久久久久国产精品 | 国产一区精品视频 | 99久久99| 黄色成人在线网站 | 久久久国产视频 | 国产福利片在线 | 另类久久 | 亚洲黄色一区二区三区 | 中文字幕国产视频 | 成人精品久久久 | 中文字幕亚洲一区 | 国产成人精品一区二区 | 狠狠操av | 毛片a片| 欧美成人高清 | 成人在线片 | 亚洲精选一区 | 黄色在线视频网 | 韩日一区| 欧美在线视频一区二区 | 91麻豆精品国产91久久久久久 | 黄色一级片黄色一级片 | 日韩一区二区三区在线 | 久久久久亚洲一区二区三区 | 一区二区三区中文字幕 | 久久久91精品国产一区二区三区 | 9999久久久久 | 91国偷自产一区二区三区亲奶 | 日视频 | 成人欧美一区二区三区在线播放 | 国产精品成人免费视频 | 日韩色av | 北条麻妃一区二区免费播放 | 成人深夜免费视频 | 亚洲成人在线网站 | 日韩免费 | 国产精品久久久一区二区三区 | 精品国产一区二区三区成人影院 | 国产精品婷婷午夜在线观看 | 在线视频 中文字幕 | 一区二区三区影院 | 亚洲综合一区二区 | 日韩亚洲一区二区 | 国产精品国色综合久久 | 国产1区2区3区 | 日韩精品影院 | 第一色在线 | 在线日韩一区 | 一区二区色 | 久久精品这里热有精品 | 九色91视频 | 91佛爷在线观看 | 国产精品美女视频一区二区三区 | 国产精品第一区 | 亚洲精品久久久久久下一站 | 男女羞羞视频网站18 | 亚洲看片| 精品国产精品三级精品av网址 | 91麻豆精品国产91久久久久久 | 久久午夜视频 | 亚洲久草视频 | 久久伊人在 | 成人在线观看一区 | 自拍偷拍精品 | 亚洲欧美日韩在线一区二区三区 | 午夜精品久久久久 | 日本久久99 | 国产成人精品免费视频大全最热 | 欧美国产一区二区三区 | 激情一区 | 精品伊人 | 欧美日韩久久精品 | 欧美日韩亚洲高清 | 中文字幕日韩欧美一区二区三区 | 91偷拍精品一区二区三区 | 亚洲人在线观看视频 | 免费视频爱爱太爽了 | 欧美高清一区 | 国产精品色综合 | 国产精品久久久久久久久久久免费看 | 中文在线一区 | 久久精品欧美一区二区三区不卡 | 精品久久网 | 欧美成人免费观看 | 欧美一区二区 | 日韩欧美第一页 | 免费国产一区二区 | 国产在线一区二区三区 | 中文字幕精品一区二区三区精品 | 成人综合av | 久久综合伊人 | 性大毛片视频 | 欧美伊人影院 | 黑人巨大精品欧美一区免费视频 | 亚洲高清视频在线观看 | 国产一区二区三区在线 | 天堂一区 | 国产精品免费一区二区三区四区 | 四虎av在线 | 99精品国产高清在线观看 | 亚洲免费视频在线观看 | 日本五月婷婷 | 成人在线观看一区 | 成人欧美日韩一区二区三区 | 国产精品美女久久久久久久久久久 | 欧美精品一级 | 欧美黄色一区 |