脚本宝典收集整理的这篇文章主要介绍了Python-爬虫之urllib,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
# 1个对象类型
# ------------------------------------
print(type(response)) # <class 'http.client.HTTPResponse'>
# 6个方法
# ------------------------------------
# 1. read()
# 功能:一个字节一个字节的读
# 返回:二进制字节类型
content = response.read() # 读取全部
content = response.read(6) # 读 n 个字节
# 2. readlines()
# 功能:一行一行的读,直到读取完
# 返回:返回列表,每个元素是每行数据的二进制字节类型
content = response.readlines().
# 3. readline()
# 功能:读取第一行,只读取一行
# 返回:二进制字节类型
content = response.readline()
# 4. getcode()
# 功能:返回状态码 【如果是 200 则说明正确,如果是 404、、 等,就是错误】
# 返回:整数类型
print(response.getcode())
# 5. geturl()
# 功能:获取 url 地址
# 返回:字符串
print(type(response.geturl()))
import urllib.parse
import urllib.request
import urllib.error
try:
# 1. 提供基础url
baseUrl = 'https://www.bilibili.com'
# 2. 提供url的参数
data = {
# 没有的话,就不写
}
# 3. 将参数转变为Unicode编码,且用'&'连接成字符串
data = urllib.parse.urlencode(data)
# 4. 拼接为完整的 url
url = baseUrl + data
# 5. 提供请求头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
}
# 6. 定制请求对象
request = urllib.request.Request(url=url, headers=headers)
# 7. 发送请求
response = urllib.request.urlopen(request)
# 8. 读取相应数据
content = response.read()
# 9. 解码数据
content = content.decode('utf-8')
# 10. 处理数据
print(content)
with open('bi.html', 'w', encoding='utf-8') as fp:
fp.write(content)
except urllib.error.HTTPError:
print('HTTPError:错误!!!')
except urllib.error.URLError:
print('URLError:错误!!!')
import json
import urllib.parse
import urllib.request
import urllib.error
try:
# 1. 提供基础url
baseUrl = 'https://fanyi.baidu.com/sug'
# 2. 提供url的参数
data = {
'kw': 'key',
}
# 3. 将参数转变为Unicode编码,并且用'&'连接成字符串
data = urllib.parse.urlencode(data)
# 4. 将参数进行编码【post比get多出的一步】
data = data.encode('utf-8')
# 5. 提供请求头
headers = {
'Referer': 'https://fanyi.baidu.com/translate?aldtype=16047&query=&keyfrom=baidu&smartresult=dict&lang=auto2zh',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
}
# 6. 定制请求对象
request = urllib.request.Request(url=baseUrl, data=data, headers=headers)
# 7. 发送请求
response = urllib.request.urlopen(request)
# 8. 读取相应数据
content = response.read()
# 9. 解码数据
content = content.decode('utf-8')
# 10. 处理数据
# 编码:保存到文件
with open('fanyi.json', 'w', encoding='utf-8') as fp:
# json.dump(content, fp) # 如果用这个方法,可能会报错
fp.write(content)
# 解码:从文件读出
with open('fanyi.json', 'r', encoding='utf-8') as fp:
data = json.load(fp)
print(data)
except urllib.error.HTTPError:
print('HTTPError:错误!!!')
except urllib.error.URLError:
print('URLError:错误!!!')
import urllib.parse
import urllib.request
import urllib.error
from random import choice
try:
# 1. 提供基础url
baseUrl = 'https://www.bilibili.com'
# 2. 提供url的参数
data = {
# 没有的话,就不写
}
# 3. 将参数转变为Unicode编码,且用'&'连接成字符串
data = urllib.parse.urlencode(data)
# 4. 拼接为完整的 url
url = baseUrl + data
# 5. 提供请求头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
}
# 6. 定制请求对象
request = urllib.request.Request(url=url, headers=headers)
# 7. 提供一个 代理池
proxise_pool = [
{'http': '47.242.66.236:4818'},
{'http': '47.242.190.60:11573'},
]
# 8. 随机获取一个代理
proxise = choice(proxise_pool)
# 9. 获取 handler 对象
handler = urllib.request.ProxyHandler(proxies=proxise)
# 10. 获取 opener 对象
opener = urllib.request.build_opener(handler)
# 11. 调用 open 方法,模拟浏览器向服务器发送请求,并获得响应对象
response = opener.open(request)
# 12. 读取相应数据
content = response.read()
# 13. 解码数据
content = content.decode('utf-8')
# 14. 处理数据
print(content)
except urllib.error.HTTPError:
print('HTTPError:错误!!!')
except urllib.error.URLError:
print('URLError:错误!!!')
import json
import urllib.parse
import urllib.request
import urllib.error
from random import choice
try:
# 1. 提供基础url
baseUrl = 'https://fanyi.baidu.com/sug'
# 2. 提供url的参数
data = {
'kw': 'key',
}
# 3. 将参数转变为Unicode编码,并且用'&'连接成字符串
data = urllib.parse.urlencode(data)
# 4. 将参数进行编码【post比get多出的一步】
data = data.encode('utf-8')
# 5. 提供请求头
headers = {
'Referer': 'https://fanyi.baidu.com/translate?aldtype=16047&query=&keyfrom=baidu&smartresult=dict&lang=auto2zh',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
}
# 6. 定制请求对象
request = urllib.request.Request(url=baseUrl, data=data, headers=headers)
# 7. 提供一个 代理池
proxise_pool = [
{'http': '47.242.66.236:4818'},
{'http': '47.242.190.60:11573'},
]
# 8. 随机获取一个代理
proxise = choice(proxise_pool)
# 9. 获取 handler 对象
handler = urllib.request.ProxyHandler(proxies=proxise)
# 10. 获取 opener 对象
opener = urllib.request.build_opener(handler)
# 11. 调用 open 方法,模拟浏览器向服务器发送请求,并获得响应对象
response = opener.open(request)
# 12. 读取相应数据
content = response.read()
# 13. 解码数据
content = content.decode('utf-8')
# 14. 处理数据
# 编码:保存到文件
with open('fanyi.json', 'w', encoding='utf-8') as fp:
# json.dump(content, fp) # 如果用这个方法,可能会报错
fp.write(content)
# 解码:从文件读出
with open('fanyi.json', 'r', encoding='utf-8') as fp:
data = json.load(fp)
print(data)
except urllib.error.HTTPError:
print('HTTPError:错误!!!')
except urllib.error.URLError:
print('URLError:错误!!!')
以上是脚本宝典为你收集整理的Python-爬虫之urllib全部内容,希望文章能够帮你解决Python-爬虫之urllib所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。