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. 注销Apache

    到D:\phpTools\Apache24\bin下运行cmd 输入httpd.exe -k uninstall -n apache24 回车后提示注销完成 接着把Apache的文件删了即可

  2. 普通台式机装centos7系统

    一.环境 台式机配置如下: 配置:CPU -i5-7400 内存:8G 硬盘:1T 原装系统: win7 64x 使用软碟通刻录U盘做系统启动盘,教程: 教你用UltraISO+U盘制作启动盘和安装各 ...

  3. 联合索引在B+树上的存储结构及数据查找方式

    能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 引言 上一篇文章<MySQL索引那些事>主要讲了MySQL索引的底层原理,且对比了B ...

  4. pikachu-文件包含漏洞(Files Inclusion)

    一.文件包含漏洞概述     在web后台开发中,程序员往往为了提高效率以及让代码看起来简洁,会使用"包含"函数功能.例如把一些功能函数都写进fuction.php中,之后当某个文 ...

  5. Tomcat 核心配置

    tomcat的核心配置在conf/server.xml中. <Server>   根元素 <Server>即Catalina Servlet组件. <Server por ...

  6. 0x01 C语言-编写第一个hello world

    学习每一个编程语言都是从 "Hello world!" 开始的,这好像就是编程界一条不成文的规定一样. 在这篇文章中,我将教大家编写一个可以输出 "Hello world ...

  7. Dijkstra算法 1

    // Dijkstra算法,适用于没有负边的情况 // 注意:是没有负边,不是没有负环 // 在这一条件下,可以将算法进行优化 // 从O(v*E)的复杂度,到O(V^2)或者是O(E*log(V)) ...

  8. VSTO开发指南(VB2013版) 第一章 Office对象模型

    完美地将visual basic和office 办公软件结合起来.来自微软公司VSTO小组的权威专家所编著. 全书共712页,内容极其全面而深入,猛一看,厚地犹如庞然大物.看完离大神就不远了哦< ...

  9. 在视觉可视化中如何使用ScaleBreaks-比例中断

    从lightningChart V8开始,这项图表控件产品开始支持X轴的Scale break功能. 这个功能的主要作用是排除选定的X轴范围,例如互动交易时间/日期或者机器停产时间等.如果有一部分的数 ...

  10. 【DTOJ】1001:长方形周长和面积

    DTOJ 1001:长方形周长和面积  解题报告 2017.11.05 第一版  ——由翱翔的逗比w原创 题目信息: 题目描述 已知长方形的长和宽,求长方形的周长和面积? 输入 一行:空格隔开的两个整 ...