## find_all的使用:
1. 在提取标签的时候,第一个参数是标签的名字。然后如果在提取标签的时候想要使用标签属性进行过滤,那么可以在这个方法中通过关键字参数的形式,将属性的名字以及对应的值传进去。或者是使用`attrs`属性,将所有的属性以及对应的值放在一个字典中传给`attrs`属性。
2. 有些时候,在提取标签的时候,不想提取那么多,那么可以使用`limit`参数。限制提取多少个
```python
tr = soup.find_all('tr',limit=2)
trs = soup.find_all('tr')
trs = soup.find_all('tr',attrs={'class':"even"})
tr = soup.find_all('tr',class_="even")
```
 
## find与find_all的区别:
1. find:找到第一个满足条件的标签就返回。说白了,就是只会返回一个元素。
2. find_all:将所有满足条件的标签都返回。说白了,会返回很多标签(以列表的形式)。
## 使用find和find_all的过滤条件:
1. 关键字参数:将属性的名字作为关键字参数的名字,以及属性的值作为关键字参数的值进行过滤。
2. attrs参数:将属性条件放到一个字典中,传给attrs参数。
## 获取标签的属性:
1. 通过下标获取:通过标签的下标的方式。
    ```python
    href = a['href']
    ```
2. 通过attrs属性获取:示例代码:
    ```python
    href = a.attrs['href']
    ```
## string和strings、stripped_strings属性以及get_text方法:
1. string:获取某个标签下的非标签字符串。返回来的是个字符串。如果这个标签下有多行字符,那么就不能获取到了。
2. strings:获取某个标签下的子孙非标签字符串。返回来的是个生成器。
2. stripped_strings:获取某个标签下的子孙非标签字符串,会去掉空白字符。返回来的是个生成器。
4. get_text:获取某个标签下的子孙非标签字符串。不是以列表的形式返回,是以普通字符串返回。
## CSS选择器:
1. 根据标签的名字选择,示例代码如下:
    ```css
    p{
        background-color: pink;
    }
    ```
2. 根据类名选择,那么要在类的前面加一个点。示例代码如下:
    ```css
    .line{
        background-color: pink;
    }
    ```
3. 根据id名字选择,那么要在id的前面加一个#号。示例代码如下:
    ```css
    #box{
        background-color: pink;
    }
    ```
4. 查找子孙元素。那么要在子孙元素中间有一个空格。示例代码如下:
    ```css
    #box p{
        background-color: pink;
    }
    ```
5. 查找直接子元素。那么要在父子元素中间有一个>。示例代码如下:
    ```css
    #box > p{
        background-color: pink;
    }
    ```
6. 根据属性的名字进行查找。那么应该先写标签名字,然后再在中括号中写属性的值。示例代码如下:
    ```css
    input[name='username']{
        background-color: pink;
    }
    ```
7. 在根据类名或者id进行查找的时候,如果还要根据标签名进行过滤。那么可以在类的前面或者id的前面加上标签名字。示例代码如下:
    ```css
    div#line{
        background-color: pink;
    }
    div.line{
        background-color: pink;
    }
    ```
## BeautifulSop中使用css选择器:
在`BeautifulSoup`中,要使用css选择器,那么应该使用`soup.select()`方法。应该传递一个css选择器的字符串给select方法。
## 常见的四种对象:
1. Tag:BeautifulSoup中所有的标签都是Tag类型,并且BeautifulSoup的对象其实本质上也是一个Tag类型。所以其实一些方法比如find、find_all并不是BeautifulSoup的,而是Tag的。
2. NavigableString:继承自python中的str,用起来就跟使用python的str是一样的。
3. BeautifulSoup:继承自Tag。用来生成BeaufifulSoup树的。对于一些查找方法,比如find、select这些,其实还是Tag的。
4. Comment:这个也没什么好说,就是继承自NavigableString。
## contents和children:
返回某个标签下的直接子元素,其中也包括字符串。他们两的区别是:contents返回来的是一个列表,children返回的是一个迭代器。

BeautifulSoup笔记的更多相关文章

  1. Python爬虫常用模块,BeautifulSoup笔记

    import urllib import urllib.request as request import re from bs4 import * #url = 'http://zh.house.q ...

  2. BeautifulSoup4库

    BeautifulSoup4库 和lxml一样,Beautiful Soup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML数据.lxml只会局部遍历,而Beautif ...

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

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

  4. BeautifulSoup学习笔记

    1.如果tag最内层只有一个 NavigableString 类型子节点,那么这个tag可以直接使用tag.string 得到子节点 # encoding=utf-8 from bs4 import ...

  5. 学习笔记 requests + BeautifulSoup

    第一步:requests get请求 # -*- coding:utf-8 -*- # 日期:2018/5/15 17:46 # Author:小鼠标 import requests url = &q ...

  6. python爬虫之Beautifulsoup学习笔记

    相关内容: 什么是beautifulsoup bs4的使用 导入模块 选择使用解析器 使用标签名查找 使用find\find_all查找 使用select查找 首发时间:2018-03-02 00:1 ...

  7. Python BeautifulSoup 简单笔记

    Beautiful Soup 是用 Python 写的一个 HTML/XML 的解析器,它可以很好的处理不规范标记并生成剖析树.通常用来分析爬虫抓取的web文档.对于 不规则的 Html文档,也有很多 ...

  8. PYTHON 爬虫笔记九:利用Ajax+正则表达式+BeautifulSoup爬取今日头条街拍图集(实战项目二)

    利用Ajax+正则表达式+BeautifulSoup爬取今日头条街拍图集 目标站点分析 今日头条这类的网站制作,从数据形式,CSS样式都是通过数据接口的样式来决定的,所以它的抓取方法和其他网页的抓取方 ...

  9. PYTHON 爬虫笔记五:BeautifulSoup库基础用法

    知识点一:BeautifulSoup库详解及其基本使用方法 什么是BeautifulSoup 灵活又方便的网页解析库,处理高效,支持多种解析器.利用它不用编写正则表达式即可方便实现网页信息的提取库. ...

随机推荐

  1. 【ABAP系列】SAP abap dialog screen屏幕参数简介

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP abap dialog ...

  2. lvs三种负载均衡模式

    lvs模式 lvs nat模式 地址转换 nat模式 地址转发 ,数据全部集中在lvs处理,lvs压力大 lvs ip-tun模式 ip隧道 与nat模式差不多,差别有了隧道封装,轮询调度给后端服务器 ...

  3. Docker 容器化部署1小时简单入门

    Docker简介 Docker是DotCloud开源的.可以将任何应用包装在Linux container中运行的工具.2013年3月发布首个版本,当前最新版本为1.3.Docker基于Go语言开发, ...

  4. HardFault_Handler

    STM32程序一运行就进入HardFault_Handler,原因很可能是堆栈溢出 ]={}; // 我把程序中上面这句注释了就没事了 :进入HardFault_Handler也可能是数组越界引起的: ...

  5. linux驱动模型——platform(2)

    一. platform 组织架构 1.1. platform工作体系都定义在drivers/base/platform.c中 1.2. platform相关函数声明在include/linux/pla ...

  6. 数组去重,排序,重复次数,两个数组合并,两个数组去重,map(),filter(),reduce()

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. Arrays.asList使用指南和一些坑(转)

    一.java.util.Arrays.asList() 的一般用法 List 是一种很有用的数据结构,如果需要将一个数组转换为 List 以便进行更丰富的操作的话,可以这么实现: String[] m ...

  8. html表格单元格添加斜下框线的方法

    一.分隔单元格的方法 1.用“transform: rotate(-55deg);”把一条水平线旋转一定角度就成斜线了 2.利用以下命令调整分割线位置等. :after :before transfo ...

  9. 前后台交互实例二:前台通过django在数据库里面增删改查数据

    url(r'^userinfo/', views.userinfo), url(r'^userdetail-(?P<nid>\d+)/', views.userdetail), url(r ...

  10. spark sql 操作

    DSL风格语法 1.查看DataFrame中的内容 scala> df1.show +---+--------+---+ | id| name|age| +---+--------+---+ | ...