一、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. Mybatis框架基础支持层——反射工具箱之MetaClass(7)

    简介:MetaClass是Mybatis对类级别的元信息的封装和处理,通过与属性工具类的结合, 实现了对复杂表达式的解析,实现了获取指定描述信息的功能 public class MetaClass { ...

  2. Bootstrap 实战之响应式个人博客 (二)

    阅读本博文前请参考:Bootstrap 实战之响应式个人博客 (一) 一.博客 1.结构 整体博客详情页的结构共包括四部分: 导航栏 博客主体内容 右侧栏:全局搜索框,广告位,推荐阅读 页尾 其中导航 ...

  3. cSharp:反射 Reflection

    /// <summary> /// 利用反射调用插件方法 /// 涂聚文(Geovin Du) /// 2019-03-27 /// /// </summary> /// &l ...

  4. JQuery显示,隐藏和淡入淡出效果

    为了把JQuery搞熟悉,看着菜鸟教程,一个一个例子打,边看边记,算是一晚上的一个小总结吧.加油,我很本但是我很勤奋啊.系统的了解它,就要花时间咯. <!DOCTYPE html> < ...

  5. nodejs+express+mongodb写api接口的简单尝试

    1:启动mongodb服务 我的mongoDB的安装目录:E:\mongoDB\bin,版本:3.4.9 打开cmd  -> e:(进入e盘) -> cd mongoDB/bin(进入mo ...

  6. 下拉框 JComboBox,文本框JTextField

    1. 下拉框 JComboBox //导入Java类 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEven ...

  7. SQL 百万级数据提高查询速度的方法

    ----------------[转] 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描.2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 ...

  8. Operating system error 32(failed to retrieve text for this error. Reason: 15105)

    一台数据库服务器的事务日志备份作业偶尔会出现几次备份失败的情况,具体的错误信息为: DATE/TIME:    2018/7/30 12:10:52 DESCRIPTION: BackupDiskFi ...

  9. UITableView编辑模式大全解

    1.UITableView 的编辑模式 进入编辑模式 代码体现 // 设置 editing 属性 tableView?.editing = true // 这个设置的时候是有动画效果的 tableVi ...

  10. 如何制作中文Javadoc包,并导入到Eclipse

    原理:使用chm转换工具将chm文件转换为zip文件,导入eclipse中即可. 准备 JDK1.9 API 中文 谷歌翻译版:http://www.pc6.com/softview/SoftView ...