【转】requests、BeautifulSoup使用总结

转自,https://www.cnblogs.com/wupeiqi/articles/6283017.html  ----

 

Python标准库中提供了:urllib、urllib2、httplib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。

1、GET请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 1、无参数实例
  
import requests
  
ret = requests.get('https://github.com/timeline.json')
  
print ret.url
print ret.text
  
  
  
# 2、有参数实例
  
import requests
  
payload = {'key1''value1''key2''value2'}
ret = requests.get("http://httpbin.org/get", params=payload)
  
print ret.url
print ret.text

2、POST请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1、基本POST实例
  
import requests
  
payload = {'key1''value1''key2''value2'}
ret = requests.post("http://httpbin.org/post", data=payload)
  
print ret.text
  
  
# 2、发送请求头和数据实例
  
import requests
import json
  
url = 'https://api.github.com/some/endpoint'
payload = {'some''data'}
headers = {'content-type''application/json'}
  
ret = requests.post(url, data=json.dumps(payload), headers=headers)
  
print ret.text
print ret.cookies

3、其他请求

1
2
3
4
5
6
7
8
9
10
requests.get(url, params=None**kwargs)
requests.post(url, data=None, json=None**kwargs)
requests.put(url, data=None**kwargs)
requests.head(url, **kwargs)
requests.delete(url, **kwargs)
requests.patch(url, data=None**kwargs)
requests.options(url, **kwargs)
  
# 以上方法均是在此方法的基础上构建
requests.request(method, url, **kwargs)

4、更多参数

 参数列表

 

 参数示例

 

官方文档:http://cn.python-requests.org/zh_CN/latest/user/quickstart.html#id4

BeautifulSoup

BeautifulSoup是一个模块,该模块用于接收一个HTML或XML字符串,然后将其进行格式化,之后遍可以使用他提供的方法进行快速查找指定元素,从而使得在HTML或XML中查找指定元素变得简单。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from bs4 import BeautifulSoup
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
asdf
    <div class="title">
        <b>The Dormouse's story总共</b>
        <h1>f</h1>
    </div>
<div class="story">Once upon a time there were three little sisters; and their names were
    <a  class="sister0" id="link1">Els<span>f</span>ie</a>,
    <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
    <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</div>
ad<br/>sf
<p class="story">...</p>
</body>
</html>
"""
soup = BeautifulSoup(html_doc, features="lxml")
# 找到第一个a标签
tag1 = soup.find(name='a')
# 找到所有的a标签
tag2 = soup.find_all(name='a')
# 找到id=link2的标签
tag3 = soup.select('#link2')

安装:

1
pip3 install beautifulsoup4

使用示例:

1
2
3
4
5
6
7
8
9
10
11
from bs4 import BeautifulSoup
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
    ...
</body>
</html>
"""
soup = BeautifulSoup(html_doc, features="lxml")

1. name,标签名称

2. attr,标签属性

3. children,所有子标签

1
2
# body = soup.find('body')
# v = body.children

4. children,所有子子孙孙标签

5. clear,将标签的所有子标签全部清空(保留标签名)

6. decompose,递归的删除所有的标签

7. extract,递归的删除所有的标签,并获取删除的标签

8. decode,转换为字符串(含当前标签);decode_contents(不含当前标签)

9. encode,转换为字节(含当前标签);encode_contents(不含当前标签)

10. find,获取匹配的第一个标签

11. find_all,获取匹配的所有标签

12. has_attr,检查标签是否具有该属性

13. get_text,获取标签内部文本内容

14. index,检查标签在某标签中的索引位置

1
2
3
4
5
6
7
# tag = soup.find('body')
# v = tag.index(tag.find('div'))
# print(v)
# tag = soup.find('body')
# for i,v in enumerate(tag):
# print(i,v)

15. is_empty_element,是否是空标签(是否可以是空)或者自闭合标签,

     判断是否是如下标签:'br' , 'hr', 'input', 'img', 'meta','spacer', 'link', 'frame', 'base'

16. 当前的关联标签

17. 查找某标签的关联标签

18. select,select_one, CSS选择器

19. 标签的内容

20.append在当前标签内部追加一个标签

21.insert在当前标签内部指定位置插入一个标签

22. insert_after,insert_before 在当前标签后面或前面插入

23. replace_with 在当前标签替换为指定标签

24. 创建标签之间的关系

25. wrap,将指定标签把当前标签包裹起来

26. unwrap,去掉当前标签,将保留其包裹的标签

1
2
3
# tag = soup.find('a')
# v = tag.unwrap()
# print(soup)

更多参数官方:http://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

一大波"自动登陆"示例

 抽屉新热榜
 github
 知乎
 博客园
 拉勾网

转载于:https://www.cnblogs.com/yoyo008/p/9285489.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-17907.html

如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网进行投诉反馈,一经查实,立即删除!


相关文章:

  • RMAN 数据库克隆文件位置转换方法
  • CentOS随笔 - 4.CentOS7安装MySql 5.5.60(下载 tar 方式安装)
  • tensorflow输出
  • 关于数据迁移的一些经验总结
  • visual studio 2010 c++ 打印 Hello world
  • java开发注意事项
  • redis和couchbase的比较
  • java基础47 装饰着模式设计
  • ASP.NET CORE的H5上传
  • 了解一些分词工具
  • Intel收购半导体设计公司eASIC
  • 二进制,八进制,十六进制,十进制之间的换算
  • (七)SSH认证
  • ubuntu安装dockers和images:dvwa
  • Linux设备管理(三):sysfs文件系统的功能及其应用
  • 阿里架构师的日志:带你快速理解微服务架构;理解微服务架构的核心
  • 事件的拖拽一
  • sql server 2012 复制数据库向导出现TransferDatabasesUsingSMOTransfer()异常
  • Codeforces 1009E Intercity Travelling 【期望】【概率】
  • 休息【归并排序】【模拟】
  • 洛谷 P2804 神秘数字
  • Python基础练习-002-求1000以内的完全数
  • win10 安装oracle 11gR2_database(内附下载地址)
  • 【基础神经网络汇总】
  • 前端框架——记录
  • react native中使用 react-native-easy-toast 和react-native-htmlview
  • 视达配色教程1 色彩是什么
  • 1048 数字加密
  • 使用Redis进行简单的数据缓存
  • python入门第二十五天--反射 通过字符串的形式操作对象中的成员
  • 洛谷 P3119 [USACO15JAN]草鉴定Grass Cownoisseur 解题报告
  • STL之set的应用
  • Windows 8.1安装python出现api-ms-win-crt-runtime-l1-1-0.dll
  • Redis-集群
  • 暑假总结03
  • Python爬虫开发【第1篇】【正则表达式】
  • 文件读写和字符串、列表的排序
  • 【HDU 3038】How Many Answers Are Wrong(带权并查集,区间型)
  • ubuntu lamp环境(阿里云搭建lamp)
  • Noip2011提高组 聪明的质监员
  • 考研数据结构-二叉树
  • 移动端注意事项
  • C++入门进阶秘籍
  • bzoj 1556 墓地秘密 —— 状压DP
  • 模板库
  • 实习阶段修改的第一个bug(完成了一个需求)
  • python 可变参数示例
  • 重构:利用postman检测前后端互相传值
  • P1090 合并果子
  • python中函数的返回值