urllib库的学习与使用


urllib是Python标准库中最常用的Python网页访问的模块,它可以让用户像访问本地文本文件一样读取网页的内容。

Request模块

request模块主要用于打开和读取URL
使用前首先导入
from urllib import request
request模块定义了以下函数:

urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

用于打开统一资源定位地址 url,返回一个Response对象
各参数的作用
url:(表示有效网址的字符串或Request对象)
data:(默认为None,以GET方式发送请求;当用户给出data参数的时候,改为POST方式发送请求)
timeout(可选参数):请求连接的等待时间,超时则抛出异常,以秒为单位。
cafile、capath:(为HTTPS请求指定了一组可信的CA证书,默认为None,一般不用)
cadefault:(默认为False,可忽略)
context:(描述各种SSL选项的SSLContext实例,默认为None,一般不用)
例如:

response = request.urlopen("https://www.baidu.com")

由于部分网站拒绝爬虫程序的连接请求,所以我们要设置User-Agent参数来隐藏身份,User-Agent存放于headers中,网站服务器就是通过查看User-Agent来判断访问者的信息。此时我们需要用到下面的Request来构造一个Request对象

Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

写个简单的例子

from urllib import request
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) \
AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/78.0.3904.108 Safari/537.36"}#使用谷歌浏览器的User-Agent
req = request.Request("https://www.baidu.com", headers = header)
response = request.urlopen(req)
html = response.read().decode("utf-8")#read()返回bytes类型数据,需要对其解码,方便进一步的解析
#这一小段代码的作用是将网站的信息爬取下来
print(html)#输出查看爬取到的信息

Response对象

Response对象提供了如下方法:
read()、readline()、fileno()、close():这些方法的使用方式和文件对象完全一样。
info():返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息。
getcode():返回HTTP状态码。200表示请求成功。
geturl():返回请求的URL。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 使用python urllib写一段代码可以使用以下语句:import urllib.requesturl = 'http://www.example.com'response = urllib.request.urlopen(url)html = response.read() ### 回答2: import urllib.request url = "https://api.openai.com/v1/engines/davinci/codex/completions" headers = { "Content-Type": "application/json", "Authorization": "Bearer YOUR_API_KEY" } data = { "prompt": "Once upon a time", "max_tokens": 50 } data = urllib.parse.urlencode(data).encode("utf-8") req = urllib.request.Request(url, data=data, headers=headers) response = urllib.request.urlopen(req) result = response.read().decode("utf-8") print(result) ### 回答3: 使用Pythonurllib进行网页请求,可以实现获取网页的HTML代码,实现同样的效果。下面是一个使用urllib的示例代码: ```python import urllib.request # 设置网页链接 url = 'https://www.example.com' # 发送请求并获取响应 response = urllib.request.urlopen(url) # 读取响应的内容 html = response.read() # 输出网页的HTML代码 print(html) ``` 以上代码首先导入了urllib.request模块,然后设置了需要访问的网页链接,接着使用`urllib.request.urlopen(url)`方法发送请求,获取到网页的响应内容。最后使用`response.read()`方法读取响应的内容,得到网页的HTML代码。通过`print`语句输出HTML代码。 这段代码和使用requests实现相同的效果,都是通过发送请求并获取响应来获取网页的HTML代码,并将其打印出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭动手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值