1.requests库

1.1 安装

win下

pip install requests

1.2 常用方法

#各种请求方式:常用的就是requests.get()和requests.post()
>>> import requests
>>> r = requests.get('https://api.github.com/events')
>>> r = requests.post('http://httpbin.org/post', data = {'key':'value'})
>>> r = requests.put('http://httpbin.org/put', data = {'key':'value'})
>>> r = requests.delete('http://httpbin.org/delete')
>>> r = requests.head('http://httpbin.org/get')
>>> r = requests.options('http://httpbin.org/get')

1.2.1 .get((url, params=None, **kwargs),常用方法

1.2.2 .post()

需要有个参数,字典

有关get请求和post请求的区别



1.2.3 .content()

获取二进制的数据,因为像音频,图片,视频等是二进制保存的

1.2.4 .json()

对于一些事json存储格式的,可以直接调用这个方法

1.2.5 .session()

利用session模型登陆进行先后访问

后面补充

2.beautifulsoup4

解析html的强大工具

beautifulsoup默认支持python的标准html解析库,但是它也支持第三方库lxml xml等

我是anaconda3 里面自带这个库

2.1 常用方法

就是看一些标签把,一般提取之前,先F12,查看下 原网页的你需要的东西都在那个标签或者那个子标签里面

.prettify() 缩进格式

.title 获取title的所有名称

.title.string 获取title所有的内容

.head 获取head标签中的内容

.div 获取div标签中的内容

.a 获取a标签中的内容

.find_all("a") 获取a标签中的所有内容

.find(id="ul") 获取id="ul"

#获取所有的a标签,并遍历打印a标签中的href的值
for item in bs.find_all("a"):
print(item.get("href"))
#获取所有的a标签,并遍历打印a标签的文本值
for item in bs.find_all("a"):
print(item.get_text())

2.2 bs4 中四大对象种类

  • Tag html中的一个个标签
  • NavigableString 获取标签内部的文字用.string就行
  • BeautifulSoup 一个文档的内容
  • Comment 一个特殊类型的NavigableString对象,其输出的内容不包括注释符号

对于Tag,有两个重要的属性,name和attrs

一般对于标签来说,其name就是标签名字

attr是可以提取标签的属性的,得到的类型是一个字典

可以修改删除属性

2.3 遍历文档树

  • .contents 获取Tag的所有子节点,返回一个list,因此可以按照list的方式提取值
  • .children 获取Tag的所有子节点,返回一个生成器

    初步认为这俩的不同是返回对象的类型不太一样

    children用的多一点嘛?

**一般获取所有的xx节点就是上一个for循环就好了

for child in bs.body.children:
print(children)

2.4 搜索文档树

2.4.1 find_all

find_all(name,attrs,recursive,text,%%kwargs)

name参数

  • 字符串过滤,会查找与字符串完全匹配的内容,也就是精确查找
  • 正则表达式:若是正则表达式那就通过search()来匹配内容
  • 列表:与列表中的任一元素匹配的节点返回
t_list=bs.find_all(["meta","link"])
for item in t_list:
print(item)
  • 方法:传入方法就根据方法来匹配
def name_is_exists(tag):
return tag.has_attr("name") t_list=bs.find_all(name_is_exists)
for item in t_list:
print(item)

kwargs

#查询id=head的Tag
t_list=bs.find_all(id="head")
print(t_list) #查询所有包含class的Tag(因为class在python中属于关键字,所以加上_进行区别)
```python
t_list=bs.find_all(class_=True)
for item in t_list:
print(item)

attr参数

不是所有的属性都可以用上面的方式进行搜索,比如html中的data-*属性,可以使用attr参数,定义一个字典素偶所包含特殊属性的tag:

t_list=bs.find_all(attrs={"data-foo":"values"})
for item in t_list:
print(item)

text参数

可以通过线束搜索文档中的字符串内容,与name的可选参数一样

limit参数

传入一个limit参数;哎限制返回的数量

2.4.2 find

返回符合条件的第一个Tag

2.5 css选择器

.select()

爬虫学习笔记2requests库和beautifulsoup4库学习笔记的更多相关文章

  1. Python:requests库、BeautifulSoup4库的基本使用(实现简单的网络爬虫)

    Python:requests库.BeautifulSoup4库的基本使用(实现简单的网络爬虫) 一.requests库的基本使用 requests是python语言编写的简单易用的HTTP库,使用起 ...

  2. 用requests库和BeautifulSoup4库爬取新闻列表

    import requests from bs4 import BeautifulSoup url='http://news.gzcc.cn/html/xiaoyuanxinwen/' res=req ...

  3. Python学习---xml文件的解析[beautifulsoup4模块学习]

    1.1. 安装beautifulsoup4 pip install beautifulsoup4 [更多参考]https://blog.csdn.net/sunhuaqiang1/article/de ...

  4. python应用之爬虫实战2 请求库与解析库

    知识内容: 1.requests库 2.selenium库 3.BeautifulSoup4库 4.re正则解析库 5.lxml库 参考: http://www.cnblogs.com/wupeiqi ...

  5. python网络爬虫学习笔记(二)BeautifulSoup库

    Beautiful Soup库也称为beautiful4库.bs4库,它可用于解析HTML/XML,并将所有文件.字符串转换为'utf-8'编码.HTML/XML文档是与“标签树一一对应的.具体地说, ...

  6. Mudo C++网络库第六章学习笔记

    muduo网络库简介 高级语言(Java, Python等)的Sockects库并没有对Sockects API提供更高层的封装, 直接用它编写程序很容易掉到陷阱中: 网络库的价值还在于能方便地处理并 ...

  7. ArcGIS案例学习笔记_3_2_CAD数据导入建库

    ArcGIS案例学习笔记_3_2_CAD数据导入建库 计划时间:第3天下午 内容:CAD数据导入,建库和管理 目的:生成地块多边形,连接属性,管理 问题:CAD存在拓扑错误,标注位置偏移 教程:pdf ...

  8. Python学习笔记011_模块_标准库_第三方库的安装

    容器 -> 数据的封装 函数 -> 语句的封装 类 -> 方法和属性的封装 模块 -> 模块就是程序 , 保存每个.py文件 # 创建了一个hello.py的文件,它的内容如下 ...

  9. 自己在linux上编译、链接、动态库和静态库的学习笔记

    在平常的项目中,我们都是使用公司要求的makefile.makedebug一类的文件,因此,在编译.链接.生成和链接动态库与静态库的时候,我们只是简单的使用一些已经设置的变量,只是简单的修改.添加一些 ...

随机推荐

  1. springmvc maven idea 多模块开发(三):建立子模块

    传统的多模块方式是建立domain.dao.service等,这种方式是按照软件架构进行分割,现在更多的应该是倾向按照功能来解耦,module前期可以配置成jar,后期也可以建立独有的页面,独立的站点 ...

  2. Hexo | 超详细的hexo+githhub page搭建过程

    首先安装node.js 安装git 去Git官网根据你的电脑参数,下载对应版本. 下载完成,通过在命令行输入 git version 查看是否安装成功,有输出版本号说明安装成功. 鼠标邮件菜单里就多了 ...

  3. Vue.js 起步

    通过实例来看下 Vue 构造器中需要哪些内容 测试时这段代码我直接写在index.html中 <!DOCTYPE html> <html> <head> <m ...

  4. linux下(centos7)docker安装

    参考链接https://docs.docker.com/install/linux/docker-ce/centos/ 第一步,确定是centos7及以上版本 cat /etc/redhat-rele ...

  5. Lucene之查询索引

    Query子类 TermQuery:根据域和关键词进行搜索 /** * termQuery根据域和关键词进行搜索 */ @Test public void termQuery() throws IOE ...

  6. JS中let、var、const的区别

    先看let和var: 1. console.log(a); // undefined var a = 3; console.log(a); // Uncaught ReferenceError: Ca ...

  7. Hystrix压测

    背景介绍 JSF(京东服务框架,类似dubbo)默认配置了可伸缩的最大到200的工作线程池,每一个向外提供的服务都在其中运行(这里我们是服务端),这些服务内部调用外部依赖时(这里我们是客户端)一般是同 ...

  8. python部署到服务器

    python部署到服务器 linux下的CentOS 7 自带python2.7.5, 使用 python --version 命令查看,因系统需要python2.7.5,因此我们并不卸载,另外安装p ...

  9. navicate 连接mysql8.0,个人踩坑问题汇总

    navicate 连接mysql8.0,个人踩坑问题汇总本文目录:1:安装mysql8.0新增全新验证方式,安装如果不修改mysql连接不上2:mysql启动命令问题3:navicate 运程连接My ...

  10. 斯坦福发布2019全球AI报告:中国论文数量超美国,自动驾驶汽车领域获投资最多

    近日,斯坦福联合MIT.哈佛.OpenAI等院校和机构发布了一份291页的<2019年度AI指数报告>. 这份长达291页的报告从AI的研究&发展.会议.技术性能.经济.教育.自动 ...