Python之urllib的使用


title: python-urllib
date: 2019-11-23 22:51:34
type: archives
tags:
– urllib
categories:

– python

Python之Urllib库的使用

Urllib库的源代码网址:Lib/urllib

根据官方的文档介绍,python3.8之后urllib包换成urllib.requests和urllib.error两个模块了。需要pip两个包才可以用

urllib.request 打开和读取URL
urllib.error 包含urllib.request抛出的异常
urllib.parse 用于解析URL
urllib.robotparser 用于解析robots.txt文件
#导入urllib.request模块
import urllib.request
#加入with异常处理
with urllib.request.urlopen("http://baidu.com") as response:
    html = response.read()
#打印出数据
print(html)

还可以自定义请求头 (伪装成浏览器访问)

header = {"User-Agent": "Mozilla-Firefox5.0"}

浏览器请求头大全

#火狐
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0
#谷歌
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko)
#IE浏览器
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
#Opera浏览器
User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; U; zh-cn) Presto/2.10.229 Version/11.62

使用urll.parse处理数据

import urllib.request
import urllib.parse

url = "http://www.baidu.com"
values = {
    'name': 'MaxHack',
    'password': 'admin',
    'language': 'Python'}

data = urllib.parse.urlencode(values)
data = data.encode('ascii')
url_rep = urllib.request.Request(url,data)
with urllib.request.urlopen(url_rep) as reponse:
    html = reponse.read()

print(html)

加入Error异常处理

import urllib.request
import urllib.parse
import urllib.error

url = "http://www.baidu.com"
values = {
    'name': 'MaxHack',
    'password': 'admin',
    'language': 'Python'}

data = urllib.parse.urlencode(values)
data = data.encode('ascii')
url_rep = urllib.request.Request(url, data)
try:
    urllib.request.urlopen(url_rep)
except urllib.error.URLError as e:
    print("发生异常了>>>>")
with urllib.request.urlopen(url_rep) as response:
    html = response.read()
print(html)

等待后续

作者:男将
Blog: MaxHack

发表评论

电子邮件地址不会被公开。 必填项已用*标注