urllib入門
mport urllib.request
#向指定的url地址發送請求,並返回服務器響應的類文件對象
response = urllib.request.urlopen("http://www.baidu.com/")
#服務器返回的類文件對象支持python文件對象的操作方法
#read()方法就是讀取文件裏面的全部內容,返回字符串
#此方法的缺點是不能構造,headers不能添加
#所以如下
headers = {
"User-Agent":"Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11"}
requests = urllib.request.Request("http://www.baidu.com/",headers=headers)
response = urllib.request.urlopen(requests)
print(response.read())
#response響應文件除了支持文件操作方法外還支持一下方法
#4服務器頁面沒找到 5服務器本身有問題
print(response.getcode())
#防止重定向 ,返回實際數據的url
print(response.geturl())
#返回服務器響應的http報頭
print(response.getinfo())
下一個user-agent列表
import urllib.request
import random
def load_baidu():
url="http://www.baidu.com"
user_agent_list=[
"Mozilla / 5.0(Windows;U;WindowsNT6.1;en - us) AppleWebKit / 534.50(KHTML, likeGecko) Version / 5.1Safari / 534.50",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36",
"Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11"
]
#每次請求的地址都是不一樣的
random_user_agent = random.choice(user_agent_list)
request = urllib.request.Request(url)
#增加對應的響應頭
request.add_header("User-Agent",random_user_agent)
#請求數據
#response = urllib.request.urlopen(request)
print(request.headers)
load_baidu()
解決urlencode中的字典問題
import urllib.request
import string
import urllib.parse
def get_params():
url="https://www.baidu.com/s?"
params={
"wd":"中文",
"key":"zhang",
"value":"san"
}
str_params = urllib.parse.urlencode((params))
#wd=%E4%B8%AD%E6%96%87&key=zhang&value=san上面這個函數的作用
print(str_params)
final_url=url+str_params
#將帶有中文的url,轉義成計算機可識別的url
end_url = urllib.parse.quote(final_url,safe=string.printable)
response = urllib.request.urlopen(end_url)
data = response.read().decode("utf-8")
print(data)
get_params()
————————————————
版權聲明:本文爲CSDN博主「(๑• . •๑)框」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_45051787/article/details/104289241