爬虫-request以及beautisoup模块笔记
requests模块
pip3 install requests
res = requests.get('')
res.text
res.cookies.get_dict()
res.content
res.encoding
res.aparent_encoding
res.status_code
res = requests.post(
headers={
'User-Agent': ''
}
url="",
cookies={},
data={}
)
request.request参数详解
1. method: 提交方式
2. url: 提交地址
3. params: 在 url 上传递的参数,以 get 形式的提交数据
4. data: 在 body 中提交的数据,字典:{"k1":'v1'}、字节:"k1=v1&k2=v2"、文件对象
5. json: 在 body 中提交的数据,把数据进行一个 json.dump()后一个字符串后发送,字典中嵌套字典时使用
6. headers: 请求头
Referer:你上一次访问的地址
User-Agent : 客户端
7. cookies: cookies置于 header 中发送
8. files: 文件对象
9. auth: 在 hrader 中加入加密的用户名和密码来做认证
10. timeout: 超时时间 (connect timeout, read timeout) <timeouts>.
11. allow_redirects: 是否允许重定向
12. proxies: 代理
proxys={
'http':'http://192.168.112:8080'
}
13. verify: 布尔值,是否忽略https证书
14. stream: 流式处理,布尔值,从 response.iter_content()中迭代去取
15. cert: https 证书
request.session
s8.py测试,保存客户端历史访问信息
beautisoup 模块
1. name 根据标签名称获取标签
tag = soup.find('a') # 查找
name = tag.name # 获取a
tag.name = 'span' # 设置
2. attrs 标签的属性
# tag = soup.find('a')
# attrs = tag.attrs # 获取
# print(attrs)
# tag.attrs = {'ik':123} # 设置会覆盖原来的所有属性
# tag.attrs['id'] = 'iiiii' # 增加新的属性
del tag.attrs['id'] 删除某个属性
# print(soup)
3. children 所有儿子标签,第一层
tag.children
4. descendants 子子孙孙的标签
tag.descendants
5.删除
- clear,将标签的所有儿子标签全部清空(保留自己标签)
- decompose 递归的删除所有,包括自己
- extract 递归的删除所有标签,并返回删除的,通 pop 方法
6. 字节与字符串之间的转换
- decode 对象转换为字符串,含有当前标签
- decode_contents 转换为字符串,不含有当前标签
- encode 对象转换为字节、含有当前标签
- encode_contents 转换为字节、不含有当前标签
7. 匹配
- find
tag = soup.find(
name='a', # 标签
attrs={'class': 'sister'}, # 属性
recursive=True, # 布尔值、True(只匹配一层,默认值);False(递归寻找)
text='Lacie' # 标签文本匹配
)
tags = soup.find(name='a', class_='sister', recursive=True, text='Lacie')
- find_all
tags = soup.find_all(
'a',limit=1 # limit 只匹配一个
)
--------------------
v = soup.find_all(name=['a','div']) 匹配两个标签,关系为或
v = soup.find_all(class_=['sister0', 'sister']) 匹配多个属性,关系为或
v = soup.find_all(id=['link1','link2'])
= soup.find_all(href=['link1','link2'])
8. 自定义正则
import re
rep = re.compile('^h')
v = soup.find_all(name=rep)
rep = re.compile('sister.*')
v = soup.find_all(class_=rep)
rep = re.compile('http://www.oldboy.com/static/.*')
v = soup.find_all(href=rep)
9. 自定义方法帅选
def func(tag):
return tag.has_attr('class') and tag.has_attr('id')
v = soup.find_all(name=func)
10. has_attr 是否有属性检测
11. text get_text 文本获取
12. index 获取标签在在某个标签中的索引位置
tag = soup.find('body')
v = tag.index(tag.find('div'))
tag = soup.find('body')
for i,v in enumerate(tag):
print(i,v)
13. is_empty_element 判断是否是空标签或者自闭合标签
判断是否为:'br' , 'hr', 'input', 'img', 'meta','spacer', 'link', 'frame', 'base'
tag = soup.find('br')
v = tag.is_empty_element
14. 获取当前的关联标签(属性)
soup.next # 下一个
soup.next_element
soup.next_elements
soup.next_sibling
soup.next_siblings
tag.previous # 上一个
tag.previous_element
tag.previous_elements
tag.previous_sibling
tag.previous_siblings
tag.parent # 父标签
tag.parents # 层级父标签
15. 获取当前的关联标签(方法)
tag.find_next(...)
tag.find_all_next(...)
tag.find_next_sibling(...)
tag.find_next_siblings(...)
tag.find_previous(...)
tag.find_all_previous(...)
tag.find_previous_sibling(...)
tag.find_previous_siblings(...)
tag.find_parent(...)
tag.find_parents(...)
参数同find_all
16. css 选择器,同 js 标签选择器使用
soup.select("title")
soup.select("p nth-of-type(3)")
soup.select("body a")
soup.select("html head title")
tag = soup.select("span,a")
soup.select("head > title")
soup.select("p > a")
soup.select("p > a:nth-of-type(2)")
soup.select("p > #link1")
soup.select("body > a")
soup.select("#link1 ~ .sister")
soup.select("#link1 + .sister")
soup.select(".sister")
soup.select("[class~=sister]")
soup.select("#link1")
soup.select("a#link2")
soup.select('a[href]')
soup.select('a[href="http://example.com/elsie"]')
soup.select('a[href^="http://example.com/"]')
soup.select('a[href$="tillie"]')
soup.select('a[href*=".com/el"]')
from bs4.element import Tag
def default_candidate_generator(tag):
for child in tag.descendants:
if not isinstance(child, Tag):
continue
if not child.has_attr('href'):
continue
yield child
tags = soup.find('body').select("a", _candidate_generator=default_candidate_generator)
print(type(tags), tags)
from bs4.element import Tag
def default_candidate_generator(tag):
for child in tag.descendants:
if not isinstance(child, Tag):
continue
if not child.has_attr('href'):
continue
yield child
tags = soup.find('body').select("a", _candidate_generator=default_candidate_generator, limit=1)
print(type(tags), tags)
17. 标签内容
tag = soup.find('span')
print(tag.string) # 获取
tag.string = 'new content' # 设置
print(soup)
18. append 在当前标签内部最后追加一个标签对象
tag = soup.find('body')
tag.append(soup.find('a'))
print(soup)
from bs4.element import Tag
obj = Tag(name='i',attrs={'id': 'it'})
obj.string = '我是一个新来的'
tag = soup.find('body')
tag.append(obj)
print(soup)
19. insert 在当前标签内部指定位置插入一个标签对象
from bs4.element import Tag
obj = Tag(name='i', attrs={'id': 'it'})
obj.string = '我是一个新来的'
tag = soup.find('body')
tag.insert(2, obj)
print(soup)
20. insert_after、insert_before 在指定标签的前面或者和面插入一个标签对象
21. replace_with 将当前标签替换为指定的标签一个标签对象
22. 创建标签之间的关系,不修改 html 中的位置,只修改逻辑属性关系
tag = soup.find('div')
a = soup.find('a')
tag.setup(previous_sibling=a)
print(tag.previous_sibling)
23. wrap 将指定标签把当前标签包裹起来
div = soup.find('div')
a = soup.find('a')
div.wrap(a) # 将 div 包裹进 a标签中
24.unwrap,去掉当前标签,将保留其包裹的标签
a = '<div>测试<a>test</a></div>'
tag = soup.find('div')
v = tag.unwrap()
v = '测试<a>test</a>' # 把外层的标签去除,将保留其包裹的标签
爬虫-request以及beautisoup模块笔记的更多相关文章
- 爬虫-request和BeautifulSoup模块
requests简介 Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工 ...
- 爬虫开发3.requests模块
requests模块 - 基于如下5点展开requests模块的学习 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能 ...
- 爬虫(三):urllib模块
1. urllib模块 1.1 urllib简介 urllib 是 Python3 中自带的 HTTP 请求库,无需复杂的安装过程即可正常使用,十分适合爬虫入门 urllib 中包含四个模块,分别是: ...
- 【爬虫入门手记03】爬虫解析利器beautifulSoup模块的基本应用
[爬虫入门手记03]爬虫解析利器beautifulSoup模块的基本应用 1.引言 网络爬虫最终的目的就是过滤选取网络信息,因此最重要的就是解析器了,其性能的优劣直接决定这网络爬虫的速度和效率.Bea ...
- Python爬虫与数据分析之模块:内置模块、开源模块、自定义模块
专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...
- 【网络爬虫入门03】爬虫解析利器beautifulSoup模块的基本应用
[网络爬虫入门03]爬虫解析利器beautifulSoup模块的基本应用 1.引言 网络爬虫最终的目的就是过滤选取网络信息,因此最重要的就是解析器了,其性能的优劣直接决定这网络爬虫的速度和效率.B ...
- 爬虫简介与requests模块
爬虫简介与requests模块 一 爬虫简介 概述 网络爬虫是一种按照一定规则,通过网页的链接地址来寻找网页的,从网站某一个页面(通常是首页)开始,读取网页的内容,找到网页中的其他链接地址,然后通过这 ...
- Python爬虫——Request模块
# 使用 Requests 发送网络请求# 1.导入 Requests 模块import requests# 2.尝试获取某个网页 # HTTP 请求类型r = requests.get('https ...
- 爬虫---request+++urllib
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...
随机推荐
- 【Elasticsearch全文搜索引擎实战】之集群搭建及配置
文中Elasticsearch版本为6.0.1 1. 环境配置 把环境配置放在第一节来讲,是因为很多人按官网的Getting Started安装运行会有各种错误.其实都是因为一些配置不正确引起的. 首 ...
- pycharm安装,svn使用,远程开发调试,接口测试,连接服务器
磨刀不误砍柴工,配置完美的编辑器,在开发时,能帮助我们节约大量的时间成本,从而是我们的精力放在业务逻辑实现上面! 接下来将介绍 使用pyhcarm如何使用svn,远程开发调试,接口测试,已经连接远程服 ...
- APICloud常用模块
常用模块 基础 fs db 支付 wxPay aliPay unionPay 消息 ajpush rongCloud2
- KVM虚拟化网络优化技术总结
https://www.intel.com/content/dam/www/public/us/en/documents/technology-briefs/sr-iov-nfv-tech-brief ...
- 从零开始学习前端JAVASCRIPT — 12、JavaScript面向对象编程
一.构造函数的使用 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- qwe框架- CNN 实现
CNN实现 概述 我在qwe中有两种,第一种是按照Ng课程中的写法,多层循环嵌套得到每次的"小方格",然后WX+b,这样的做法是最简单,直观.但是效率极其慢.基本跑个10张以内图片 ...
- vxWorks应用程序加载的另一种办法
现在我们的工作中,应用程序一般都是和BSP联编,然后将vxworks_rom.bin烧到班子里.在BSP启动后,调用应用程序的函数的. 但是这样有个问题,就是应用程序和BSP结合的太紧密了.BSP开发 ...
- 用DirectShow实现视频采集-流程构建
DirectShow作为DirectX的一个子集,它为用户提供了强大.方便的多媒体开接口,并且它拥有直接操作硬件的能力,这使得它的效率远胜于用GDI等图形方式编写的多媒体程序.前面一篇文章已经对Dir ...
- .Net 4.X 提前用上 .Net Core 的配置模式以及热重载配置
1. 前言 在提倡微服务及 Serverless 越来越普及的当下,在 .Net Core 之前,.Net 应用的配置模式往往依赖于一个名为 web.config 的 XML 文件,耦合性高,而可扩展 ...
- Unity开发之实现更换鼠标图片
在玩游戏的时候,感觉游戏里的鼠标图片特酷炫,23333,今天我就总结了两种方法! 我是做Unity开发的,所以方法仅针对于Unity平台........ 方法如下: 1.Unity客户端直接更改,步骤 ...