爬虫自学

爬虫自学

解析网页数据:

  • 解析纯文本,可以选择正则表达式,(re模块)

  • 解析HTML或XML格式的数据,则可以选择正则表达式、XPath、BeautifulSoup(lxml库和bs4库)

  • 解析JSON格式的数据,则可以选择JSONPath(jsonpath模块)

  • 正则表达式语法:

    • 元字符
      • .——匹配任何一个字符(换行符除外)
      • ^——匹配字符串的开头
      • $——匹配字符串的末尾
      • |——连接多个子表达式,匹配与任意子表达式模式相同的字符串
      • []——字符组,匹配其中的出现的任意一个字符
      • -——连字符,匹配指定范围内的任意一个字符
      • ?——匹配其前导字符0或1次
      • *——匹配其前导字符0次或多次
      • +——匹配其前导字符1次或多次
      • {n}——匹配其前导字符n次
      • {m,n}——匹配其前导字符m~n次
      • ()——分组,匹配子组
    • 预定义字符集
      • \w——匹配”_“或任何字母和数字
      • \s——匹配任意空白字符
      • \d——匹配任意数字
      • \b——匹配单词边界
      • \W——与\w相反
      • \S——与\s相反
      • \D——与\d相反
      • \B——与\b相反
      • \A——仅匹配字符串开头
      • \Z——仅匹配字符串结尾
  • re模块的使用:

    • compile()函数:对正则表达式进行预编译,生成一个代表正则表达式的Pattern对象compile(pattern, flags=0)
      • 参数flags用于指定正则表达式匹配模式:
        • re.l:忽略大小写
        • re.L:本地化识别匹配
        • re.M:多行匹配
        • re.S:是字符"."匹配所有字符,包括换行符
        • re.U:根据Unicode字符集匹配字符
        • re.A:根据ASCII字符集匹配字符
        • re.X:允许使用更灵活的格式书写正则表达式
    • 全文匹配:findall()与finditer()函数:
      • findall():用于获取目标文本中所有与正则表达式匹配的内容,并将所有匹配内容以列表的形式返回;findall(pattern, string ,flags=0)
      • finditer():获取目标文本中所有与正则表达式匹配的内容,但以迭代器形式返回。
  • Xpath

    • 路径表达式,描述从一个节点到另一个节点或一组节点的顺序。
    • 节点名称——选取此节点的所有子节点
    • /——从根节点选取直接子节点,相当于绝对路径
    • //——从当前节点选取后代节点,相当于相对路径
    • .——选取当前节点
    • ..——选取当前节点的父节点
    • @——选取属性节点
    • 谓语
    • 通配符
      • *——匹配任何元素节点
      • @*——匹配任何属性节点
      • node()——匹配任何类型的节点
  • lxml库

    • etrr模块
    • ElementTree类的对象可以理解为一个HTML或XML文档的节点树。
    • parse()函数parse(source, parser=None, base_url=None)
      • source:必选参数,表示待解析的内容,该参数支持4种类型的取值,分别是打开的文件对象(二进制打开),类似文件的对象,字符串形式的文件名称,字符串形式的URL
      • parser:可选参数,表示解析器
      • base_url:可选参数,表示基础URL
    • HTML()函数用于从字符串常量中解析HTML文档或片段,并能够自动补全文档或片段缺失的元素
    • fromstring()函数和XML()函数功能相同,都可以从字符串常量中解析XML文档或片段
    • Element类对象可以理解为XML或HTML文档的节点,可以使用len()、append()、remove()等方法修改节点,也可以使用索引、切片等获取节点集中的子节点。
    • find()方法:从节点树的某个节点开始查找,返回匹配到的第一个子节点
    • findall()方法:从节点树的某个节点开始查找,以列表形式返回匹配到的所有子节点
    • xpath()方法:从节点树的根节点或某个节点开始查找,以列表形式返回匹配到的所有子节点。
  • BeautifulSoup

    • element.Tag类:表示HTML中的标签,是最基本的信息组织单元,有两个非常重要的属性:标签名tag,属性attrs
    • element.NavigableString类:表示HTML中标签的文本
    • BeautifulSoup类:表示HTML或XML节点树中的全部内容,支持遍历节点和索引文档树的大部分方法
    • element.Comment类:表示元素内字符串的注释部分
    • 步骤:
      • 创建BeautifulSoup类对象BeautifulSoup(markup, features, parser_only, from_encoding)
        • markup表示待解析内容,可以取值为字符串或类似文件的对象
        • feature,表示指定的解析器,解析器名称包括lxml、lxml-xml、html.parser、html5lib
        • parser_only:用于指定只解析部分文档,需要接收一个SoupStrainer类的对象。
        • from_encoding:用于指定待解析文档的编码格式
posted @ 2023-02-28 21:58  潇洒哥001  阅读(51)  评论(0)    收藏  举报