2.requests模块方法

requests是基于Python开发的HTTP库,使用Requests可以轻而易举的完成浏览器可有的任何操作。

  • request.get()

  • request.post()

  • request.put()

  • 以上方法均是在此方法的基础上构建requests.request(method, url, **kwargs)

    • method 包括 psot、get、put等等
    • **kwargs 包括常用参数
      • url = ‘’,
      • params = {'k1':'v1','k2','v2'}, # get方法仅限的参数传递方式
      • cookies = {},
      • headers = {}, # 请求头
      • data = {}, # post等请求参数传递
      • json = {}, # json数据参数

2.1 requests.get

  1. requests.get(
  2. url='xxx',
  3. params={'k1':'v1','nid':888},
  4. cookies={},
  5. headers={},
  6. )
  7. # http://www.baidu.com?k1=v2&nid=888

2.2 requests.post

  1. requests.post(
  2. url='xxx',
  3. params={'k1':'v1','nid':888},
  4. cookies={},
  5. # data
  6. headers={'content-type': 'application/x-www-form-urlencoded'},
  7. data={},
  8. # json
  9. # headers={'content-type': 'application/json'},
  10. # json={}
  11. )

其他参数

auth身份验证

  1. def param_auth():
  2. from requests.auth import HTTPBasicAuth, HTTPDigestAuth
  3. ret = requests.get('https://api.github.com/user', auth=HTTPBasicAuth('wupeiqi', 'sdfasdfasdf'))
  4. print(ret.text)
  5. # ret = requests.get('http://192.168.1.1',
  6. # auth=HTTPBasicAuth('admin', 'admin'))
  7. # ret.encoding = 'gbk'
  8. # print(ret.text)
  9. # ret = requests.get('http://httpbin.org/digest-auth/auth/user/pass', auth=HTTPDigestAuth('user', 'pass'))
  10. # print(ret)

allow_redirects 重定向(控制是否url跳转)

  1. def param_allow_redirects():
  2. ret = requests.get('http://127.0.0.1:8000/test/', allow_redirects=False)
  3. print(ret.text)

stream 流 (true相应内容按流式下载)

  1. def param_stream():
  2. ret = requests.get('http://127.0.0.1:8000/test/', stream=True)
  3. print(ret.content)
  4. ret.close()
  5. # from contextlib import closing
  6. # with closing(requests.get('http://httpbin.org/get', stream=True)) as r:
  7. # # 在此处理响应。
  8. # for i in r.iter_content():
  9. # print(i)

cert 是否携带证书(证书名)

  1. requests.get('http://httpbin.org/get',cert="xxxx.pem")

session

此处的session并非之前所学session,

此处的session,是个容器,携带所有请求头、体等等,

所以,我们每次requests请求时,都需要cookies等手动添加请求中,

利用session可以自动携带cookies、session等信息发送请求

  1. session = requests.Session()
  2. session.post(url,data={}) # 省略cookies=cookie
  3. # response_ = requests.post(url,data={},cookies=cookie)

3.BeautifulSoup模块方法

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

from bs4.Element import Tag

1,name 标签名

  1. # tag = soup.find('a')
  2. # name = tag.name # 获取
  3. # print(name)
  4. # tag.name = 'span' # 设置
  5. # print(soup)

2,attr 属性标签

  1. # tag = soup.find('a')
  2. # attrs = tag.attrs # 获取
  3. # print(attrs)
  4. # tag.attrs = {'ik':123} # 设置
  5. # tag.attrs['id'] = 'iiiii' # 设置
  6. # print(soup)

3,children,所有子标签

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

4, children,所有后代标签

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

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

  1. # tag = soup.find('body')
  2. # tag.clear()
  3. # print(soup)

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

  1. # tag = soup.find('a')
  2. # print(tag)
  3. # tag = soup.find(name='a', attrs={'class': 'sister'}, recursive=True, text='Lacie')
  4. # tag = soup.find(name='a', class_='sister', recursive=True, text='Lacie')
  5. # print(tag)

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

  1. # tags = soup.find_all('a')
  2. # print(tags)
  3. # tags = soup.find_all('a',limit=1)
  4. # print(tags)
  5. # tags = soup.find_all(name='a', attrs={'class': 'sister'}, recursive=True, text='Lacie')
  6. # # tags = soup.find(name='a', class_='sister', recursive=True, text='Lacie')
  7. # print(tags)
  8. # ####### 列表 #######
  9. # v = soup.find_all(name=['a','div'])
  10. # print(v)
  11. # v = soup.find_all(class_=['sister0', 'sister'])
  12. # print(v)
  13. # v = soup.find_all(text=['Tillie'])
  14. # print(v, type(v[0]))
  15. # v = soup.find_all(id=['link1','link2'])
  16. # print(v)
  17. # v = soup.find_all(href=['link1','link2'])
  18. # print(v)
  19. # ####### 正则 #######
  20. import re
  21. # rep = re.compile('p')
  22. # rep = re.compile('^p')
  23. # v = soup.find_all(name=rep)
  24. # print(v)
  25. # rep = re.compile('sister.*')
  26. # v = soup.find_all(class_=rep)
  27. # print(v)
  28. # rep = re.compile('http://www.oldboy.com/static/.*')
  29. # v = soup.find_all(href=rep)
  30. # print(v)
  31. # ####### 方法筛选 #######
  32. # def func(tag):
  33. # return tag.has_attr('class') and tag.has_attr('id')
  34. # v = soup.find_all(name=func)
  35. # print(v)
  36. # ## get,获取标签属性
  37. # tag = soup.find('a')
  38. # v = tag.get('id')
  39. # print(v)

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

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

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

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

16, 当前的关联标签

  1. # soup.next
  2. # soup.next_element
  3. # soup.next_elements
  4. # soup.next_sibling
  5. # soup.next_siblings
  6. #
  7. # tag.previous
  8. # tag.previous_element
  9. # tag.previous_elements
  10. # tag.previous_sibling
  11. # tag.previous_siblings
  12. #
  13. # tag.parent
  14. # tag.parents

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

  1. # tag.find_next(...)
  2. # tag.find_all_next(...)
  3. # tag.find_next_sibling(...)
  4. # tag.find_next_siblings(...)
  5. # tag.find_previous(...)
  6. # tag.find_all_previous(...)
  7. # tag.find_previous_sibling(...)
  8. # tag.find_previous_siblings(...)
  9. # tag.find_parent(...)
  10. # tag.find_parents(...)
  11. # 参数同find_all

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

  1. # tag = soup.find('body')
  2. # tag.append(soup.find('a'))
  3. # print(soup)
  4. #
  5. # from bs4.element import Tag
  6. # obj = Tag(name='i',attrs={'id': 'it'})
  7. # obj.string = '我是一个新来的'
  8. # tag = soup.find('body')
  9. # tag.append(obj)
  10. # print(soup)

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

  1. # from bs4.element import Tag
  2. # obj = Tag(name='i', attrs={'id': 'it'})
  3. # obj.string = '我是一个新来的'
  4. # tag = soup.find('body')
  5. # tag.insert(2, obj)
  6. # print(soup)

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

  1. # from bs4.element import Tag
  2. # obj = Tag(name='i', attrs={'id': 'it'})
  3. # obj.string = '我是一个新来的'
  4. # tag = soup.find('body')
  5. # # tag.insert_before(obj)
  6. # tag.insert_after(obj)
  7. # print(soup)

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

  1. # from bs4.element import Tag
  2. # obj = Tag(name='i', attrs={'id': 'it'})
  3. # obj.string = '我是一个新来的'
  4. # tag = soup.find('div')
  5. # tag.replace_with(obj)
  6. # print(soup)

24, 创建标签之间的关系

  1. # tag = soup.find('div')
  2. # a = soup.find('a')
  3. # tag.setup(previous_sibling=a)
  4. # print(tag.previous_sibling)

requsets模块和beautifulsoup模块的更多相关文章

  1. Beautifulsoup模块基础用法详解

    目录 Beautifulsoup模块 官方中文文档 介绍 基本使用 遍历文档树 搜索文档树 五种过滤器 **find_all( name , attrs , recursive , text , ** ...

  2. python BeautifulSoup模块的简要介绍

    常用介绍: pip install beautifulsoup4 # 安装模块 from bs4 import BeautifulSoup # 导入模块 soup = BeautifulSoup(ht ...

  3. 【爬虫入门手记03】爬虫解析利器beautifulSoup模块的基本应用

    [爬虫入门手记03]爬虫解析利器beautifulSoup模块的基本应用 1.引言 网络爬虫最终的目的就是过滤选取网络信息,因此最重要的就是解析器了,其性能的优劣直接决定这网络爬虫的速度和效率.Bea ...

  4. 爬虫-request和BeautifulSoup模块

    requests简介 Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工 ...

  5. 【网络爬虫入门03】爬虫解析利器beautifulSoup模块的基本应用

    [网络爬虫入门03]爬虫解析利器beautifulSoup模块的基本应用   1.引言 网络爬虫最终的目的就是过滤选取网络信息,因此最重要的就是解析器了,其性能的优劣直接决定这网络爬虫的速度和效率.B ...

  6. Python 爬虫三 beautifulsoup模块

    beautifulsoup模块 BeautifulSoup模块 BeautifulSoup是一个模块,该模块用于接收一个HTML或XML字符串,然后将其进行格式化,之后遍可以使用他提供的方法进行快速查 ...

  7. BeautifulSoup 模块详解

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

  8. 03 解析库之Beautifulsoup模块

    Beautifulsoup模块   一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式 ...

  9. python中BeautifulSoup模块

    BeautifulSoup模块是干嘛的? 答:通过html标签去快速匹配标签中的内容.效率相对比正则会好的多.效率跟xpath模块应该差不多. 一:解析器: BeautifulSoup(html,&q ...

随机推荐

  1. sql优化问题笔记(mysql)

    相信大家平时面试都会遇到这个问题:平时你都是怎么对sql进行调优的? 此篇文章相当于一个随便笔记,根据朋友们的聊天记录整理而成,如有不对,请指正! 注意:这篇是以mysql整理的 查看sql计划分析 ...

  2. Gulp实现静态网页模块化的方法详解

    前言: 在做纯静态页面开发的过程中,难免会遇到一些的尴尬问题.比如:整套代码有50个页面,其中有40个页面顶部和底部模块相同.那么同样的两段代码我们复制了40遍(最难受的方法).然后,这个问题就这样解 ...

  3. linux shell脚本报错总结

    1  rizhi.sh: line 28: warning: here-document at line 9 delimited by end-of-file (wanted `EOF') 原因是末尾 ...

  4. JS中Number(),parseInt(),parseFloat()和自动类型转换

    [参考来源] https://www.cnblogs.com/yi0921/p/6196841.html https://blog.csdn.net/u010200222/article/detail ...

  5. Chinese Postman Problem Aizu - DPL_2_B(无向图中国邮路问题)

    题意: 带权无向图上的中国邮路问题:一名邮递员需要经过每条边至少一次,最后回到出发点,一条边多次经过权值要累加,问最小总权值是多少.(2 <= N <= 15, 1 <= M < ...

  6. Dumb Bones UVA - 10529(概率dp)

    题意: 你试图把一些多米诺骨牌排成直线,然后推倒它们.但是如果你在放骨牌的时候不小心把刚放的骨牌碰倒了,它就会把相临的一串骨牌全都碰倒, 而你的工作也被部分的破坏了. 比如你已经把骨牌摆成了DD__D ...

  7. Coding Contest HDU - 5988(费用流)

    题意: 有n个区域和m条路,每个区域有a[i]个人和b[i]个食物,然后是m条路连接两个区域,这条路容量为cap,这条路断掉的概率为p,第一个经过的时候一定不会断,后面的人有概率p会断,现在需要所有人 ...

  8. 小强学Python+OpenCV之-1.3绘图

    目标 今天的课程比较轻松,我们来学习一下OpenCV中几个绘图函数: cv2.line cv2.rectangle cv2.circle 画直线 直接经过前面两节的内容.我想直接上代码应该是可以接受的 ...

  9. 自学Zabbix3.12.3-动作Action-自动发现action配置

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix3.12.3-动作Action-自动发现action配置 1. 首先先学习  Ne ...

  10. [并查集+LCA USACO18OPEN ] Disruption

    https://www.luogu.org/problemnew/show/P4374 一看这道题就是一个妙题,然后题解什么树链剖分...珂朵莉树... 还不如并查集来的实在!我们知道并查集本来就是路 ...