阅读 166

Python入门(三)网络请求与解析

安装网络请求模块:Requests

pip install requests

在这里插入图片描述

是否似曾相识?是否想起了nodejs?

简单测试:

先导入requests模块:

import requests 复制代码

get请求:

response = requests.get("https://www.baidu.com") print(response) 复制代码

结果:

在这里插入图片描述

说明已经请求成功了,我们可以在编辑器中查看response中都有什么:

在这里插入图片描述

打印response.text:

在这里插入图片描述

这个就是百度首页内容,不过乱码了,别着急,加上这一步:

response = requests.get("https://www.baidu.com") response.encoding = response.apparent_encoding print(response.text) 复制代码

在这里插入图片描述

OK!是不是灰常简单?

当然,requests不仅仅支持get,同样也支持post,put,delete等:

在这里插入图片描述

在具体使用不同请求方式时,同样也支持headler,param等等:

requests.get("https://www.baidu.com",headers=,params=) 复制代码

这是网络请求框架必不可少的!

我们以360图片接口为例,进行分页请求:wallpaper.apc.360.cn/index.php?c…

当然,我们可以直接通过get请求该链接,也可以通过post请求并传入参数:

params = {     'c': 'WallPaperAndroid',     'a': 'getAppsByCategory',     'cid': 9,     'start': 0,     'count': 10 } response = requests.post("http://wallpaper.apc.360.cn/index.php", params=params) print(response.text) 复制代码

请求结果(json格式):

在这里插入图片描述

解析json:

json_data = json.loads(response.text) print('errno=%s,errmsg=%s' % (json_data['errno'], json_data['errmsg'])) list = json_data['data'] print("count=" + str(len(list))) 复制代码

结果:

在这里插入图片描述

注意:print打印log时,字符串后面使用+拼接参数时只能时字符串类型,所以需要用str()将int类型转为string类型!

好了,json格式的解析完了,如果我想去解析网页该怎么做呢?我很早以前使用java解析网页时,用到一个工具叫jsoup,相信也有不少同学用过,它时直接按xml格式解析,各种node,element...

python一样有类似且强大的网页解析工具: BeautifulSoup。(:python原生带有xml-sax,xml-dom解析器,但好不好用需要自己体会了!)

BeautifulSoup使用文档

BeautifulSoup优缺点:

在这里插入图片描述

我们一般在解析网页数据时,就是用的第二种:BeautifulSoup(markup, "lxml")!

安装BeautifulSoup:pip install bs4

简单测试,以百度首页为例:

from bs4 import BeautifulSoup response = requests.get("https://www.baidu.com") response.encoding = response.apparent_encoding print(response.text) soup = BeautifulSoup(response.text, "lxml") title = soup.find(name='title').text  # 也可以省略name:soup.find('title') print(title) 复制代码

执行报错:

Couldn't find a tree builder with the features you requested: lxml.  Do you need to install a parser library? 复制代码

解决方案:

1.安装virtualenv: pip install virtualenv

1.安装lxml: pip install lxml

再次执行py程序,结果:

在这里插入图片描述


作者:baiyuliang
链接:https://juejin.cn/post/7023540144930029604


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐