日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫post请求_Python爬虫之GET和POST请求

發布時間:2024/9/19 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫post请求_Python爬虫之GET和POST请求 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

爬蟲——GET請求和POST請求

urllib.parse.urlencode()和urllib.parse.unquote()

編碼工作使用urllib.parse的urlencode()函數,幫我們將key:value這樣的鍵值對轉換成"key=value"這樣的字符串,解碼工作可以使用urllib的unquote()函數。#?python3.5控制臺中測試結果

>>>?import?urllib

>>>?word?=?{"wd":"爬蟲"}

#?通過urllib.parse.urlencode()方法,將字典鍵值對按URL編碼轉換,從而能被wed服務器接受。

>>>?urllib.parse.urlencode(word)

'wd=%E7%88%AC%E8%99%AB'

#?通過urllib.parse.unquote()方法,把URL編碼字符串,轉換回原先的字符串。

>>>?urllib.parse.unquote(word)

'wd=爬蟲'

一般HTTP請求提交數據,需要編碼成URL編碼格式,然后做為URL的一部分,或者作為參數傳到Request對象中。

GET方式

GET請求一般用于我們向服務器獲取數據,比如說,我們用百度搜索 爬蟲:https://www.baidu.com/s?wd=爬蟲(https://www.baidu.com/s?wd=%E7%88%AC%E8%99%AB)

我們可以看到在請求部分里,http://www.baidu.com/s? 之后出現一個長長的字符串,其中就包含我們要查詢的關鍵詞“爬蟲”,于是我們可以嘗試用默認的GET方式來發送請求。#!/usr/bin/python3

#?-*-?coding:utf-8?-*-

#?導入庫

import?urllib.request

import?urllib

url?=?"http://www.baidu.com/s?"

word?=?{"wd":"爬蟲"}

#?轉換成url編碼格式

word?=?urllib.parse.urlencode(word)

#?拼接成完整的url

full_url?=?url?+?word

#?chrome?的?User-Agent,包含在?header里

header?=?{'User-Agent':'Mozilla/5.0?(Windows?NT?6.1;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/39.0.2171.71?Safari/537.36'}

#?url?連同?headers,一起構造Request請求,這個請求將附帶?chrome?瀏覽器的User-Agent

request?=?urllib.request.Request(full_url,?headers?=?header)

#?向服務器發送這個請求

response?=?urllib.request.urlopen(request)

html?=?response.read()

fo?=?open("baidu.html",?"wb")

fo.write(html)

fo.close()

批量爬取貼吧頁面數據

首先我們創建一個python文件:tiebaSpider.py,我們要完成的功能是,輸入一個百度貼吧的地址,比如:百度貼吧LOL吧

第一頁:http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=0

第二頁:http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=50

第三頁:http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=100

……

爬取以上頁面的內容#!/usr/bin/python3

#?-*-?coding:utf-8?-*-

"""

功能:批量爬取貼吧頁面數據

目標地址:百度貼吧LOL吧

分析:

第一頁:https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=0

第二頁:http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=50

第三頁:http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=100

……

規律:

貼吧中每個頁面URL不同之處,就是最后的pn值,其余的都是一樣的。其pn?=?(page?-?1)?*?50

url?=?"https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn="

pn?=?(page?-?1)?*?50

full_url?=?url?+?str(pn)

"""

#?導入庫

import?urllib

import?urllib.request

#?根據url地址,獲取服務器響應文件

def?loadPage(url):

"""

功能:根據url地址,獲取服務器響應文件

:param?url:?url地址

:return:?獲取的服務器響應文件信息

"""

#?chrome?的User-Agent?頭

header?=?{'User-Agent':'Mozilla/5.0?(Windows?NT?6.1;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/39.0.2171.71?Safari/537.36'}

#?url?連同?headers,一起構造Request請求,這個請求將附帶?chrome?瀏覽器的User-Agent

request?=?urllib.request.Request(url,?headers?=?header)

#?向服務器發送這個請求

reponse?=?urllib.request.urlopen(request)

#?獲取響應文件中的全部內容

html?=?reponse.read()

return?html

#?存儲文件

def?writeFile(html,?file_name):

"""

功能:存服務器響應文件到本地磁盤文件里

:param?html:?服務器響應文件內容

:param?file_name:?本地磁盤文件名

:return:?None

"""

with?open(file_name,?"wb")?as?f:

f.write(html)

#?貼吧爬蟲函數

def?tiebaSpider(url,?begin_page,?end_page):

"""

功能:處理從begin_page到end_page的url頁面

:param?url:?url地址

:param?begin_page:?需爬取的起始頁

:param?end_page:?需爬取的終止頁

:return:

"""

for?page?in?range(begin_page,?end_page?+?1):

pn?=?(page?-?1)?*?50

full_url?=?url?+?str(pn)

file_name?=?"第"?+?str(page)?+?"頁.html"

print("正在爬取"?+?file_name)

#?獲取full_url對應的html文件信息

html?=?loadPage(full_url)

print("正在存儲"?+?file_name)

#?存儲full_url對應的html文件信息

writeFile(html,?file_name)

#?主函數

if?__name__?==?'__main__':

url?=?"https://tieba.baidu.com/f?"

#?輸入需爬取的貼吧

kw?=?input("請輸入需要爬取的貼吧:")

#?輸入需爬取的起始頁和終止頁

begin_page?=?int(input("請輸入起始頁:"))

end_page?=?int(input("請輸入終止頁:"))

key?=?urllib.parse.urlencode({"kw":kw})

#?組合的的url示例:https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=

url?=?url?+?key?+?"&ie=utf-8&pn="

#?調用貼吧爬蟲函數,爬取數據

tiebaSpider(url,?begin_page,?end_page)

POST方式

Request請求對象里有data參數,這就是用在POST里的,我們要傳送的數據就是這個參數data,data是一個字典,里面要有匹配鍵值對。

以下以有道詞典翻譯網站為例為模擬POST請求。#!/usr/bin/python3

#?-*-?coding:utf-8?-*-

"""

POST方式:以有道詞典翻譯網站為例

url?=?"http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"

"""

#?導入庫

import?urllib.request

import?urllib

url?=?"http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"

#?chrome?的?User-Agent,包含在?header里

header?=?{'User-Agent':'Mozilla/5.0?(Windows?NT?6.1;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/39.0.2171.71?Safari/537.36'}

word?=?input("請輸入需要翻譯的詞條:")

from_data?=?{

"i":word,

"from":"AUTO",

"to":"AUTO",

"smartresult":"dict",

"doctype":"json",

"version":"2.1",

"keyfrom":"fanyi.wed"

}

data?=?urllib.parse.urlencode(from_data)

data?=?data.encode(encoding="utf-8")??#?str轉bytes

request?=?urllib.request.Request(url,?data?=?data,?headers?=?header)

response?=?urllib.request.urlopen(request)

html?=?response.read().decode(encoding?=?"utf-8").strip()

print(html)

獲取AJAX加載的內容

有些網頁內容是使用AJAX加載的,AJAX一般返回的是JSON,直接對AJAX地址進行POST或GET,就能返回JSON數據。#!/usr/bin/python3

#?-*-?coding:utf-8?-*-

"""

獲取AJAX加載的數據

有些網頁內容使用AJAX加載,只要記得,AJAX一般返回的是JSON,直接對AJAX地址進行post或get,就返回JSON數據了。

以豆瓣為例:

url?=?"https://movie.douban.com/j/chart/top_list?type=11&interval_id=100:90&action&start=0&limit=100"

"""

#?導入庫

import?urllib

import?urllib.request

url?=?"https://movie.douban.com/j/chart/top_list?"

#?chrome?的?User-Agent,包含在?header里

header?=?{'User-Agent':'Mozilla/5.0?(Windows?NT?6.1;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/39.0.2171.71?Safari/537.36'}

from_data?=?{

'type':'11',

'interval_id':'100:90',

'action':'',

'start':'0',

'limit':'100'

}

data?=?urllib.parse.urlencode(from_data)

data?=?data.encode(encoding="utf-8")??#?str轉bytes

request?=?urllib.request.Request(url,?data?=?data,?headers?=?header)

response?=?urllib.request.urlopen(request)

html?=?response.read().decode(encoding?=?"utf-8")

print(html)

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的python爬虫post请求_Python爬虫之GET和POST请求的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本在线免费看 | 午夜性色福利影院 | 亚洲国产无线乱码在线观看 | 欧美福利一区二区 | 黄色av网站在线 | 女性女同性aⅴ免费观女性恋 | 成人免费视频一区二区 | 欧美久久成人 | 自拍亚洲欧美 | 伊人蕉| 91福利在线免费观看 | 在线观看的毛片 | 国产又粗又猛视频免费 | 无套中出丰满人妻无码 | a毛片视频| 四川丰满少妇被弄到高潮 | 在线中文字幕观看 | 99er热精品视频 | 亚洲激情第一页 | 日韩欧美国产中文字幕 | 亚洲一二三 | 成人毛片网站 | 91黄色大片 | 人妻av中文系列 | 中国毛片网 | 日本高清视频在线播放 | 久艹在线视频 | 青青青在线视频观看 | 99福利视频导航 | 日本一区二区三区成人 | 丁香花五月天 | 国产精品男同 | 天堂av在线中文 | a级黄色在线观看 | 天堂中文在线资源 | 久久久欧美精品 | 免费国产在线视频 | 亚洲成人伦理 | 欧美天天| av天天射| 粗喘呻吟撞击猛烈疯狂 | 欧美色噜噜 | 午夜精品久久久久久久四虎美女版 | 亚洲熟妇无码另类久久久 | 国产99页| 青娱乐毛片 | 亚洲国产精品一区二区三区 | 天天做天天躁天天躁 | jzzjzzjzz亚洲成熟少妇 | 伊人网在线视频观看 | 久久婷婷国产麻豆91 | 亚洲丝袜视频 | 中文字幕在线高清 | 超碰蜜桃 | 欧美日韩五区 | 午夜精产品一区二区在线观看的 | 午夜av一区 | 深夜在线网站 | 黄色动漫免费在线观看 | 国产综合亚洲精品一区二 | 精品久久久久久亚洲综合网站 | 亚洲aa视频 | 女优一区二区三区 | 一曲二曲三曲在线观看中文字幕动漫 | 蜜桃91麻豆精品一二三区 | 激情草逼 | 久久久久久久久久久久久女国产乱 | 天天摸天天爽 | 播放毛片 | 福利一区在线 | 色婷综合| 久草福利免费 | 日韩在线成人 | 亚洲国产精品午夜久久久 | 国产综合亚洲精品一区二 | 亚洲综合涩 | 久插视频 | 91福利网址 | 美女又爽又黄视频毛茸茸 | 国产精品宾馆在线精品酒店 | 日韩欧美在线观看一区二区三区 | 中国亚洲女人69内射少妇 | 久久2019| 亚洲精久久| 亚洲精品国产乱伦 | 亚洲黄色网址大全 | 亚洲av乱码久久精品蜜桃 | 女优一区二区三区 | 午夜精品久久久久久久96蜜桃 | www.操操操 | 国产福利精品视频 | 蜜桃视频污在线观看 | 久久国产精彩视频 | 四季av一区二区凹凸精品 | 欧美亚韩一区二区三区 | 欧美1页| 老色批网站 | 亚洲天堂精品在线 | 亚洲国产欧洲 |