urllib包_操作网页URL并对网页的内容进行抓取处理

菜鸟教程
urllib库用于操作网页URL,并对网页的内容进行抓取和处理

request模块

import urllib.request

打开URL

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
  • url,网页地址
  • data,发送到服务器的其他数据对象,默认为none
  • timeout,设置访问超时时间
  • cafile、capath,前者为CA证书,后者为CA证书的路径,使用HTTPS需要用到
  • casefault,已被弃用
  • context,ssl.SSLContext类型,用来指定SSL设置

网页内容读取

read(),读取整个网页内容,可以指定读取长度
readline(),读取文件的一行内容
readlines(),读取文件的全部内容,把读取的内容赋值给一个列表变量

from urllib.request import urlopen
url = urlopen("http://c.biancheng.net/view/2397.html")
print(url.read(100))

print(url.readline())

lines = url.readlines()
for line in lines:
    print(line)

网页状态码

getcode(),获取网页状态码

网页保存本地

from urllib.request import urlopen

myURL = urlopen("https://www.runoob.com/")
f = open("runoob_urllib_test.html", "wb")
content = myURL.read()  # 读取网页内容
f.write(content)
f.close()

本地生成runoob_urllib_test.htm文件,包含网页所有内容

file处理,https://www.runoob.com/python3/python3-file-methods.html

编码解码

quote(),编码
unquote(),解码

import urllib.request
encode_url = urllib.request.quote("https://www.runoob.com/")  # 编码
print(encode_url)

unencode_url = urllib.request.unquote(encode_url)    # 解码
print(unencode_url)

在这里插入图片描述
字符串编码顺序:gbk、unicode、utf16、url解码
字符串解码顺序:url解码、utf16、unicode、gbk

error模块

包含urllib.request抛出的异常

parse模块

解析URL

robotparser模块

解析robots.txt文件

确认网页基本信息

标头

1、F12进入开发人员工具
2、选择网络
在这里插入图片描述
3、在筛选器中输入需要查看的内容名称
在这里插入图片描述

常规

确认请求方法、请求URL,请求URL不一定是浏览器上方显示地址
在这里插入图片描述

负载

在这里插入图片描述
请求负载是要发送到指定url的对象

在这里插入图片描述

相关问题解决

ValueError: Invalid header name b’ Accept-Encoding

在这里插入图片描述
在这里插入图片描述
以上情况,目前还不完全确定是因为缩进导致的,但确实去除缩进后就没这个报错
strip()只是去除字符串头尾的指定字符,关于中间的内容是不处理的

405 Not Allowed

在这里插入图片描述
表示请求不被服务器允许
1、请求方法是否正确,可在开发人员工具中的标头确认
2、请求URL是否正确,同第一点
3、权限限制,网页限制访问,需提供有效凭据或身份验证信息

JSON parse error: Unrecognized token

在这里插入图片描述

"msg" : "JSON parse error: Unrecognized token \'meetingBookingTimeStatus\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'meetingBookingTimeStatus\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\\n at [Source: (PushbackInputStream); line: 1, column: 26]",\n  "code" : 10000,\n  "data" : null\n}'

请求头中规定了Content-Type: application/json,所以应该传入JSON数据,将data修改为json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值