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) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...
随机推荐
- Adaptive Placeholders
https://wisdmlabs.com/blog/create-adaptive-placeholders-using-css/ https://circleci.com/blog/adaptiv ...
- echarts图表
<div id="main" style="width: 37.5rem;height: 25rem;"></div> <scri ...
- OOCSS(面向对象的CSS)总结
按钮样式库:buttons.css /* vue */ [v-cloak]{display: none} /* 滚动条 */ ::-webkit-scrollbar { width: 6px; hei ...
- Android Activity生命周期图解
Android activity的生命周期这一张图就够了. 验证结果: 值得注意的是从activity A--->activity B是先执行A的onPause然后走B的生命周期最后才走A的on ...
- php+ajax实现登录按钮加载loading效果
php+ajax实现登录按钮加载loading效果,一个提高用户体验,二个避免重复提交表单,ajax判断加载是否完成. 登录表单 <form onsubmit="return chec ...
- Android如何实现超级棒的沉浸式体验
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由brzhang发表于云+社区专栏 做APP开发的过程中,有很多时候,我们需要实现类似于下面这种沉浸式的体验. 沉浸式体验 一开始接触的 ...
- 【温故而知新】HTTP 报文
HTTP 报文是在 HTTP 应用程序之间发送的数据块.这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义. 报文流 报文在客户端.服务器和代理之间的流动称为报文流. HTTP 使用 ...
- C# Tostring()方法
在C#中 JArray japroimg = new JArray(); strproimg.ToString();这样会导致tostring之后的字符串中会有大量的空格 使用 japroimg.T ...
- NSTimer 不工作 不调用方法
比如,定义一个NSTimer来隔一会调用某个方法,但这时你在拖动textVIew不放手,主线程就被占用了.timer的监听方法就不调用,直到你松手,这时把timer加到 runloop里,就相当于告诉 ...
- python3字符串格式化format()函数的简单用法
format()函数 """ 测试 format()函数 """ def testFormat(): # format()函数中有几个元素, ...