python如何提取数据_python提取数据的常用方法

df4b67a7c5f232470e8196efbe5459ca.png

在我们要对某一种情况进行分析时,需要大批量的数据材料作为分析的基础,在使用python爬取时,就会涉及到不同的抓取方法。在抓取数据的类型时,又会分为不同的情况进行讨论,本篇整理了三种提取数据方法:正则表达式、BeautifulSoup、lxml。下面就这些方法进行详解。

假设我们需要爬取该网页中的国家名称和概况,我们依次使用这三种数据抓取的方法实现数据抓取。

1、正则表达式(re库)

正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。from get_html import download

import re

url = 'https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/'

page_content = download(url)

country = re.findall('class="h2dabiaoti">(.*?)', page_content) #注意返回的是list

survey_data = re.findall('

(.*?)', page_content)

survey_info_list = re.findall('

  (.*?)

', survey_data[0])

survey_info = ''.join(survey_info_list)

print(country[0],survey_info)

2、BeautifulSoup(bs4)

beautifulSoup是用python语言编写的一个HTML/XML的解析器,它可以很好地处理不规范标记并将其生成剖析树(parse tree)。它提供简单而又常见的导航(navigating),搜索及修改剖析树,此可以大大节省编程时间。from get_html import download

from bs4 import BeautifulSoup

url = 'https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/'

html = download(url)

#创建 beautifulsoup 对象

soup = BeautifulSoup(html,"html.parser")

#搜索

country = soup.find(attrs={'class':'h2dabiaoti'}).text

survey_info = soup.find(attrs={'id':'wzneirong'}).text

print(country,survey_info)

3、lxml

lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据;lxml和正则一样,也是用C语言实现的,是一款高性能的python HTML、XML解析器,也可以利用XPath语法,来定位特定的元素及节点信息。from get_html import download

from lxml import etree #解析树

url = 'https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/'

page_content = download(url)

selector = etree.HTML(page_content)#可进行xpath解析

country_select = selector.xpath('//*[@id="main_content"]/h2') #返回列表

for country in country_select:

print(country.text)

survey_select = selector.xpath('//*[@id="wzneirong"]/p')

for survey_content in survey_select:

print(survey_content.text,end='')

以上就是python提取数据的常用方法,对于每种提取方法而言,在数据的类型上会有所差异,大家可以就这些方法逐次尝试代码部分。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值