一、XML数据提取

  (1)定义:XML指可扩展标记语言、标记语言,标签需要我们自行定义

  (2)设计宗旨:是传输数据,而非显示数据,具有自我描述性

  (3)节点关系:   父:每个元素及属性都有一个父、

           子:每个元素可能有0个或者多个子

             同胞:拥有相同的父的节点

             先辈:父的父

           后代:子的子

  (4)XPath:是在XML中查找信息的语言,可以对XML文档元素和属性进行遍历

  (5)XMLQuire是开源的XPath表达式编辑工具,Chrome插件是XPath Helper,Firefox插件Xpath Checker

  (6)lxml的主要功能是如何解析和提取HTML/XMl数据,安装:pip install lxml,官方文档:lxml.de/index.html,lxm可以自动修正html代码

  (7)文件读取

from lxml import etree
#读取外部文件
html = etree.parse('/hello.html')
result = etree.tostring(html,pretty_print=True)

  (8)获取相应的标签 

from lxml import etree
#读取外部文件
html = etree.parse('/hello.html')
result = etree.tostring(html,pretty_print=True)
#获取<li>标签
result = html.xpath('//li')
#获取<li>标签的所有class属性
result = html.xpath('//li/@class')
#获取li标签下hre为link1.html的a标签
result = html.xpath('//li/a[@href="link1.html"]')
#获取li标签下的span标签
result = html.xpath('//li/span')
#获取最后一个li的a的href
result = html.xpath('//li[last()]/a/@href')
#获取倒数第二个元素内容
result = html.xpath('//li[last()-1]/a')
#获取class值为bold的标签名
result = html.xpath('//*[class="blod"]')

二、CSS选择器(BeautifulSoup)

  (1)BeautifulSoup用来解析HTML比较签单,目前使用的BeautifulSoup4,安装为:pip install BeautifulSoup4

  (2)引用  

from bs4 import BeautifulSoup

  (3)四大对象种类

    1.Tag:HTMl中的一个个标签

from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
result = soup.title
result = soup.head
result = soup.a
result = soup.p
#它的两个重要属性 name he attrs
soup.name
#[document]
soup.head.name
#对于其他内部标签,输出的值便为标签本身的名称
soup.p.attrs
#把p标签的所有属性打印出来,得到一个字典
soup.p['class']
#传入属性的名称,等同于 soup.p.get('class')
soup.p['class'] = "newclass"
#修改值
del soup.p['class']
#删除值

    2.NavigableString,获取标签的内容

soup.p.string

    3.BeautifulSoup:特殊的Tag对象

    4.Comment:特殊的NavigableString对象

#将tag的子节点以列表的方式输出
soup.head.contents
#输出的方式为列表,可以用列表的索引获取他的某一个元素
soup.head.contents[0]
#.children,返回的不是list,可以用遍历获取所有的子节点
soup.head.children
for child in soup.body.children:
print(child) #.descendants对所有子孙节点进行递归循环
for child in soup.body.descendants:
print(child)

  (5)搜索文档树

    1.find_all*(name,attrs,recursive,text,**kwargs)

  (6)CSS选择器 soup.select()

#通过标签查找
soup.select('tilte’)
#通过类名查找
soup.select('.sister')
#通过ID名查找
soup.select('#link1')
#组合查找
soup.select('p #link1')
#直接子标签查找
soup.select("head > title")
#属性查找
soup.select('a[class="sister"]')
#获取内容
for title in soup.select('title')
print(title.get_text())

三、JSON数据提取

Python——爬虫——数据提取的更多相关文章

  1. Python 爬虫 数据提取

    一下子运行 七八十个  select 将会是什么样的体验呢? 业务部门提供了一个需要,要求从爬虫数据中提取出88家的数据, 并且也提供了一个excel表格,如下图: 这个时候我们可以通过拍卖行,拍卖时 ...

  2. python爬虫数据提取之bs4的使用方法

    Beautiful Soup的使用 1.下载 pip install bs4 pip install lxml # 解析器 官方推荐 2.引用方法 from bs4 import BeautifulS ...

  3. python爬虫+数据可视化项目(关注、持续更新)

    python爬虫+数据可视化项目(一) 爬取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#) 爬取内容:全国实时温度最低的十个城市气 ...

  4. python 爬虫数据存入csv格式方法

    python 爬虫数据存入csv格式方法 命令存储方式:scrapy crawl ju -o ju.csv 第一种方法:with open("F:/book_top250.csv" ...

  5. python爬虫数据解析之BeautifulSoup

    BeautifulSoup是一个可以从HTML或者XML文件中提取数据的python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式. BeautfulSoup是python爬虫三 ...

  6. python爬虫--数据解析

    数据解析 什么是数据解析及作用 概念:就是将一组数据中的局部数据进行提取 作用:来实现聚焦爬虫 数据解析的通用原理 标签定位 取文本或者属性 正则解析 正则回顾 单字符: . : 除换行以外所有字符 ...

  7. python爬虫数据解析之正则表达式

    爬虫的一般分为四步,第二个步骤就是对爬取的数据进行解析. python爬虫一般使用三种解析方式,一正则表达式,二xpath,三BeautifulSoup. 这篇博客主要记录下正则表达式的使用. 正则表 ...

  8. 【学习】Python进行数据提取的方法总结【转载】

    链接:http://www.jb51.net/article/90946.htm 数据提取是分析师日常工作中经常遇到的需求.如某个用户的贷款金额,某个月或季度的利息总收入,某个特定时间段的贷款金额和笔 ...

  9. 爬虫数据提取之JSON与JsonPATH

    数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...

随机推荐

  1. 引入UEditor后其他列表项不显示

    最近在做的一个后台管理系统,发现一个bug: 问题描述:如果其他列表项都用类为col-xs-12的div包裹,而引入UEditor的部分不用类为col-xs-12的div包裹,那么其他列表项将无法显示 ...

  2. 为什么我觉得Python烂的要死?

    为什么我觉得Python烂的要死? https://www.toutiao.com/a6636558446030225923/ 作为机器学习程序员的首选编程语言,Python成为世界范围内最受大学生欢 ...

  3. Android ScrollView和ListView滑动冲突解决记录

    private int mLastX; private int mLastY; public View.OnTouchListener onTouchListener = new View.OnTou ...

  4. QT解析和组装json

    json这个小朋友熟悉又陌生,今天给同学们好好讲讲QT是如何使用json的,一句话:简单 1.什么是json? A:json就是个<key,value>字符串 ①一个json对象 {&qu ...

  5. redis的几种数据导入导出方式【转】

    环境说明:202.102.221.11 redis源实例202.102.221.12 redis目标实例202.102.221.13 任意linux系统 一.redis-dump方式 1.安装redi ...

  6. electron入坑指南

    electron入坑指南 简介 electron 实际集成chrome浏览器和node环境, 运行你写的网页 app 基本目录结构 index.html 名称可以不是index, 这个文件与普通网页的 ...

  7. 数据库H2学习

    本文转载自:https://www.cnblogs.com/xdp-gacl/p/4171024.html 一.H2数据库介绍 常用的开源数据库有:H2,Derby,HSQLDB,MySQL,Post ...

  8. 重装助手教你如何禁用Windows 10快速启动

    快速启动是首先在Windows 8中实现并延续到Windows 10的功能,可在启动PC时提供更快的启动时间.它是一个方便的功能,也是大多数人在不知情的情况下使用的功能,但还有一些功能会在他们掌握新P ...

  9. mysql面试题

    01. 列举常见的关系型数据库和非关系型都有那些? 1.关系型数据库通过外键关联来建立表与表之间的关系,---------常见的有:SQLite.Oracle.mysql 2.非关系型数据库通常指数据 ...

  10. Spring Boot使用注解实现AOP

    第一步: 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...