urllib
网址爬虫下载文件
可以导入头文件urllib.request和urllib.parse
:
import urllib.request as urlRequest
import urllib.parse as urlParse
对于GET请求方式的网址下载代码:
url = "http://www.baidu.com" #一个例子网址
# 打开url地址
x = urlRequest.urlopen(url)
# 获得源
sourceCode = x.read()
对于POST请求方式的网址下载代码:
url = "https://www.baidu.com"
values = {"q": "python if"}
# 解码url包含的值字段
values = urlParse.urlencode(values)
# 将解码的值格式化为 UTF-8 格式
values = values.encode("UTF-8")
# 根据字段值,创建一个目标url新连接
targetUrl = urlRequest.Request(url, values)
# 打开url连接
x = urlRequest.urlopen(targetUrl)
# 获得源
sourceCode = x.read()
对于GET请求(403禁止请求)的网址下载:
url = "https://www.baidu.com"
# 假设win10系统下,Chrome浏览器,可F12查看
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"}
req = urlRequest.Request(url, headers = headers)
# 打开Url
x = urlRequest.urlopen(req)
# 获得源
sourceCode = x.read()
Win10系统,Chrome浏览器如何查找headers
- 1.在网页任意地方右击选择审查元素或者按下
shift+ctrl+c
, 打开chrome自带的调试工具; - 2.选择
network
标签, 刷新网页(在打开调试工具的情况下刷新); - 3.刷新后在左边找到该网页url,点击 后右边选择
headers
,就可以看到当前网页的http头了;
对于POST请求(403禁止请求)的网址下载:
url = "https://www.baidu.com"
values = {"q": "python urllib"}
# 假设win10系统,Chrome 浏览器
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"}
# 解码url的字段值
values = urlParse.urlencode(values)
# 将解码值转为UTF-8格式
values = values.encode("UTF-8")
# 创建一个目标url
targetUrl = urlRequest.Request(url = url, data = values, headers = headers)
# 打开目标url
x = urlRequest.urlopen(targetUrl)
# 获得源
sourceCode = x.read()