Python——爬虫——数据提取
一、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——爬虫——数据提取的更多相关文章
- Python 爬虫 数据提取
一下子运行 七八十个 select 将会是什么样的体验呢? 业务部门提供了一个需要,要求从爬虫数据中提取出88家的数据, 并且也提供了一个excel表格,如下图: 这个时候我们可以通过拍卖行,拍卖时 ...
- python爬虫数据提取之bs4的使用方法
Beautiful Soup的使用 1.下载 pip install bs4 pip install lxml # 解析器 官方推荐 2.引用方法 from bs4 import BeautifulS ...
- python爬虫+数据可视化项目(关注、持续更新)
python爬虫+数据可视化项目(一) 爬取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#) 爬取内容:全国实时温度最低的十个城市气 ...
- python 爬虫数据存入csv格式方法
python 爬虫数据存入csv格式方法 命令存储方式:scrapy crawl ju -o ju.csv 第一种方法:with open("F:/book_top250.csv" ...
- python爬虫数据解析之BeautifulSoup
BeautifulSoup是一个可以从HTML或者XML文件中提取数据的python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式. BeautfulSoup是python爬虫三 ...
- python爬虫--数据解析
数据解析 什么是数据解析及作用 概念:就是将一组数据中的局部数据进行提取 作用:来实现聚焦爬虫 数据解析的通用原理 标签定位 取文本或者属性 正则解析 正则回顾 单字符: . : 除换行以外所有字符 ...
- python爬虫数据解析之正则表达式
爬虫的一般分为四步,第二个步骤就是对爬取的数据进行解析. python爬虫一般使用三种解析方式,一正则表达式,二xpath,三BeautifulSoup. 这篇博客主要记录下正则表达式的使用. 正则表 ...
- 【学习】Python进行数据提取的方法总结【转载】
链接:http://www.jb51.net/article/90946.htm 数据提取是分析师日常工作中经常遇到的需求.如某个用户的贷款金额,某个月或季度的利息总收入,某个特定时间段的贷款金额和笔 ...
- 爬虫数据提取之JSON与JsonPATH
数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...
随机推荐
- MySql 双主多从配置指导
MySql 双主多从配置指导 一.背景 互联网项目为了数据的可靠性和架构的可拓展性经常会用到双主多从的数据库,来实现数据的备份.负载均衡和突发状况时数据库切换. 二.思路 配置两台数据库A.B互为主从 ...
- WEB前端 CSS(非布局)
目录 WEB前端 CSS CSS引入方式 CSS结构 CSS选择器 直接选择器 组合选择器 分组选择器 也叫并集选择器 属性选择器 伪类选择器 伪元素选择器 CSS选择器是一个查找的过程,高效的查找影 ...
- 网络最大流算法—EK算法
前言 EK算法是求网络最大流的最基础的算法,也是比较好理解的一种算法,利用它可以解决绝大多数最大流问题. 但是受到时间复杂度的限制,这种算法常常有TLE的风险 思想 还记得我们在介绍最大流的时候提到的 ...
- Vue脚手架搭建项目
全局安装vue脚手架 $ npm install -g vue-cli 卸载方法 $ npm uninstall -g vue-cli 查看vue版本(注意:大写的V) $ vue -V 创建项目 $ ...
- CSS优先级的及其衡量标准CSS权重
一.背景 CSS有三大特性:层叠性.继承性.优先级. 而我们在给CSS定义样式的时候,经常出现两个及以上的规则应用在同一元素上,单该元素最终在浏览器呈现的效果是应用的哪个规则呢?这就要考虑优先级的问题 ...
- python--类属性-实类属性--静态方法总结
类属性--类方法 实类属性--实类方法 静态方法
- Kafka 特性
Kafka 特性 标签(空格分隔): Kafka 支持多个生产者 多个生成者连接Kafka来推送消息,这个和其他的消息队列功能基本上是一样的 支持多个消费者 Kafka支持多个消费者来读取同一个消息流 ...
- Jenkins+git+gitlab实现持续自动集成部署
1 实验环境 三台服务器 gitlab 192.168.7.139 Jenkins 192.168.7.140 java 192.168.7.141 [root ...
- 推荐六款炫酷的HTML5效果插件
1. HTML5 3D图片阴影翻转动画 效果很酷 分享一款很酷的HTML5 3D动画特效,这款3D特效可以为你的图片增加阴影的效果,而且可以让图片在鼠标滑过的时候出现3D翻转的动画效果.这和HTML5 ...
- Python操作MySQL:pymysql模块
连接MySQL有两个模块:mysqldb和pymysql,第一个在Python3.x上不能用,所以我们学pymysql import pymysql # 创建连接 conn = pymysql.con ...