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. CNN目标检测系列算法发展脉络——学习笔记(一):AlexNet

    在咨询了老师的建议后,最近开始着手深入的学习一下目标检测算法,结合这两天所查到的资料和个人的理解,准备大致将CNN目标检测的发展脉络理一理(暂时只讲CNN系列部分,YOLO和SSD,后面会抽空整理). ...

  2. GNU make doc - 6.6 追加变量值

    有时我们需要对已经定义过的变量进行追加,可以使用+=进行这一操作,就像下面这样 objects += another.o 该语句取objects变量的值,并在其后追加another.o(结果会在原变量 ...

  3. Matplotlib绘制漫威英雄战力图,带你飞起来!

    目录 前言 期望功能 代码实现 一.导入matplotlib依赖包 二.支持显示中文 三.使用ggplot主题 四.根据能力项等分圆 五.生成n个子图 六.获取支持的颜色 六.绘制所有子图 更多示例 ...

  4. C#设计模式学习笔记:(13)模板方法模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7837716.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第一个模式--模 ...

  5. NServiceBus 入门到精通(一)

    什么是NServiceBus?NServiceBus 是一个用于构建企业级 .NET系统的开源通讯框架.它在消息发布/订阅支持.工作流集成和高度可扩展性等方面表现优异,因此是很多分布式系统基础平台的理 ...

  6. vue 路由过渡动效

    <router-view> 是基本的动态组件,所以我们可以用 <transition> 组件给它添加一些过渡效果: <transition name="slid ...

  7. DNS | named.run文件很大的处理方法

    在查看/var/named/data目录中发现named.run文件260G+ 总用量 267G -rw-r--r-- 1 named named 1.3K 9月 2 21:27 named.run ...

  8. POJ - 1426-Find The Multiple-专为小白解惑-同余加搜索树

    题意:给出一个整数n,(1 <= n <= 200).求出任意一个它的倍数m,要求m必须只由十进制的'0'或'1'组成,m不超过100位. 解题思路:首先大家应该会想到暴力枚举每一个m,但 ...

  9. php ip转换省市县

    http://www.cz88.net/ip/ http://www.ttlsa.com/php/php_cunzhen-ipdata/ # wget h http://6.scdx3.crsky.c ...

  10. go并发版爬虫

    并发版爬虫 代码实现 /crawler/main.go package main import ( "learn/crawler/engine" "learn/crawl ...