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

python如何提取数据_python提取数据的常用方法_第1张图片

在我们要对某一种情况进行分析时,需要大批量的数据材料作为分析的基础,在使用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提取数据的常用方法,对于每种提取方法而言,在数据的类型上会有所差异,大家可以就这些方法逐次尝试代码部分。

你可能感兴趣的:(python如何提取数据)