pyhont---信息的爬取与提取---bs4,BeautifulSoup,re库

pyhont---信息的爬取与提取---bs4,BeautifulSoup,re库 用于对获取到的页面文本进行提取

BeautifulSoup库的理解:BeautifulSoup库是解析、遍历、维护"标签树"的功能库。
BeautifulSoup类的基本元素
Tag:标签,最基本的信息组织单元,分别使用<></>标明开头和结尾 多个同类标签只访问第一个标签
Name:标签的名字,<p>...</p>的名字是p,格式:<tag>.name
Attributes :标签的属性,字典形式的组织,格式:<tag>.attrs
NavigableString:标签内非属性字符串,格式:<tag>.string
Comment:标签内字符串的注释部分,一种特殊的Comment类型 用.string注释内容也会显示

///////
基于bs4库的遍历HTML方法:
  下行遍历,上行遍历,平行遍历
    标签树的下行遍历属性:
      .contents 子结点的列表,将<tag>的所有儿子节点存入列表
      .children 子节点的迭代类型,与contents类似,用于循环遍历儿子节点 //只能for,in中
      .descendants 子孙节点的迭代类型,包含所有子孙结点,用于循环遍历
  标签树的上行遍历的属性:
    .parent 节点的父亲标签
    .parents 节点先辈的迭代类型,用于循环遍历先辈节点
  标签的平行遍历属性:(平行遍历发生在同一个父节点下的各节点间)
    .next_sibling 返回按照HTML文本顺序的下一个平行节点标签
    .previous_sibling 回按照HTML文本顺序的上一个平行标签
    .next_siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
    .previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签
////////

////////
如何将HTML友好的显示:
  bs4库的prettify()方法:
    该函数可在HTML每个标签后加‘\n‘
    该函数也可以应用于tag中
////////

////////
信息标记一般类型种类:xml,json,yaml
  信息提取的一般方法:
    1、完整解析信息的标记形式,在提取关键信息
    2、无视标记形式,直接搜索信息 对信息的文本查找函数即可
    融合方法:结合形式解析与搜索方法,提取关键字 ...需要标记解析器及文本查找函数
///////

///////
beautifulsoup库对象的查找函数:
  find_all(name,attrs,recursive,string,**kwargs) 返回一个列表类型,存储查找的结果
    参数:name:对标签名称的检索字符串,可以使用列表查找多个标签,find_all(true)所有标签
       attrs:对标签属性值的检索字符串,可标注属性检索 例如find_all(‘a‘,‘href‘)
       recursive:是否对子孙所有节点搜索,默认值为true,false则值查找当前节点儿子的信息    
       string:<></>中字符串区域的检索字符串

  <tag>(..)等价于<tag>.find_all(...)
  soup(..)等价于soup.find_all(..)

  拓展方法(参数均与find_all()相同)
    find() 搜索且返回一个结果,字符串类型
    find_parents() 在先辈节点中搜索,返回一个列表类型
    find_parent() 在先辈节点中返回一个结果,字符串类型
    find_next_siblings() 在后续平行节点搜索,返回列表类型
    find_next_sibling()
    find_previous_siblings()
    find_previous_sibling() 在前序平行节点中返回一个结果,字符串类型
/////////
正则表达式:通用的字符串表达框架,判断某字符串的特征归属,用来简洁表达一组字符串的方式
   一般用于表达文本类型特征
   同时查找或替换一组字符串

    匹配字符串的全部或部分(主要)

正则表达式的使用:

  编译:将符合正则表达式语法的字符串转换正则表达式特征

  正则表达式的语法:由字符与操作符组成

  

正则表达式类型
    raw string(原生字符串类型:不包含转义字符的字符串) 表示为 r‘text‘
    string 类型

Re库 主要用于字符串匹配

Re库的主要功能函数
  re.search(pattern,string,flag=0)在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
  re.match() 在一个字符串的开始位置起匹配正则表达式,返回match对象 注意match为空
  re.findall()搜索字符串,一列表类型返回全部能匹配的子串
  re.split()将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
  re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
  re.sub()在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

  re.compile(pattern,flags) 将正则表达式的字符串形式编译成正则表达式对象

match对象
属性
  string 待匹配文本
  re 匹配时使用的pattern对象(正则表达式)
  pos 正则表达式搜索文本的开始位置
  endpos 正则表达式搜索文本的结束为止
方法
  .group(0) 获得匹配后的字符串
  .start() 匹配字符串在原始字符串的开始位置
  .end() 匹配字符串在原始字符串的结束位置
  .span() 返回(.start(),.end())元组类型

时间: 2024-08-03 21:38:30

pyhont---信息的爬取与提取---bs4,BeautifulSoup,re库的相关文章

足球竞猜网页的信息进行爬取并且对信息分析

说明 一.项目介绍 对于足球竞猜网页的信息进行爬取并且对信息分析 二.部分代码展示 import requests from lxml.html import etree headers = {'Referer': 'http://www.okooo.com/jingcai/', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.10

对于房天下租房信息进行爬取

对于房天下租房信息进行爬取 代码 import re import requests from lxml.html import etree url_xpath = '//dd/p[1]/a[1]/@href' title_xpath = '//dd/p[1]/a[1]/@title' data_xpaht = '//dd/p[2]/text()' headers = { 'rpferpr': 'https://sh.zu.fang.com/', 'User-Agent': 'Mozilla/5

爬取妹子图(requests + BeautifulSoup)

---恢复内容开始--- 刚刚入门爬虫,今天先对于单个图集进行爬取,过几天再进行翻页爬取. 使用requests库和BeautifulSoup库 目标网站:妹子图 今天是对于单个图集的爬取,就选择一个进行爬取,我选择的链接为:http://www.mzitu.com/123114 首先网站的分析,该网站有一定的反爬虫策略,所以应对就是加入headers(目前是小白,目前不知道具体为毛这样做) Hostreferer = { 'User-Agent':'Mozilla/4.0 (compatibl

爬虫10-股票信息定向爬取

股票信息定向爬取 功能描述: 目标 获取上交所和深交所所有股票的名称和交易信息 输出 保存在文件中 技术路线 requests bs4 re 候选爬取网站: 新浪股票 http://finance.sina.com.cn/stock/ 百度股票 https://gupiao.baidu.com/stock/ 网站选取: 原则 股票信息静态存在于HTML页面中,非js代码生成,没有robots协议限制 方法 浏览器F12,源代码查看等 不要纠结于某个网站,多找信息源尝试 (在视频里老师表示新浪股票

Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取

<工作细胞>最近比较火,bilibili 上目前的短评已经有17000多条. 先看分析下页面 右边 li 标签中的就是短评信息,一共20条.一般我们加载大量数据的时候,都会做分页,但是这个页面没有,只有一个滚动条. 随着滚动条往下拉,信息自动加载了,如下图,变40条了.由此可见,短评是通过异步加载的. 我们不可能一次性将滚动条拉到最下面,然后来一次性获取全部的数据.既然知道是通过异步来加载的数据,那么我们可以想办法直接去获取这些异步的数据. 打开 Network 查看分析 http 请求,可以

麦田厦门下区信息数据爬取

刚开始爬取的时候没有用headers伪装成是浏览器,导致麦田北京和福州小区把我的ip给禁掉了,还好后来发现原因也还剩下厦门小区没被我弄坏,代码如下: #-*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup page_url = "http://xm.maitian.cn/xqall" headers = {"User-Agent":"Mozilla/5.0 (X11; Linu

猫眼电影爬取(二):requests+beautifulsoup,并将数据存储到mysql数据库

上一篇通过requests+正则爬取了猫眼电影榜单,这次通过requests+beautifulsoup再爬取一次(其实这个网站更适合使用beautifulsoup库爬取) 1.先分析网页源码 可以看出每部电影信息都包含在一堆<dd>...</dd>标签中,所以第一步可以通过beautifulsoup库解析出所有<dd>标签对,然后再从<dd>标签对中依次解析排名所在的<i>标签,电影名所在的<p>标签,上映时间所在的<p>

专利事务所信息Python爬取

数据来源:http://www.acpaa.cn/ 目前事务所的信息没有做反爬限制,还是很容易拿到数据的 没有用html解析工具,直接上正则,结果就是需要处理很多乱七八糟的空格...为了能将日期顺利的插入到数据库,做了很多转换.这个代码没用多线程. 下面是代码,Python版本为3.5,需要安装pymsql,mysql # -*- coding: UTF-8 -*- import http.client import re import pymysql def saveAgency(code,

使用http.cookiejar带cookie信息登录爬取方法 -《狗嗨默示录》-

Login.py # !/usr/bin/env python # -*- coding: utf-8 -*- import urllib.request import urllib.parse import user_info import http.cookiejar import re import time import socket cookie = http.cookiejar.CookieJar() #创建cookieJar保存cookie handler = urllib.req