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