接口测试 django jetbrains 进程 顺序查找 npm安装 矿工文档 劝酒文化 matplotlib Zeptojs 八大员 vue优势 后台管理界面模板 ai视频教程下载 进销存源码 jquery移除子元素 maven配置eclipse oracle连接字符串 当前时间减一天 kubernetes集群 mysql删除表 python字典get python开发环境 python语言编程 java课程 java语言代码大全 java编程语言 java中new linux镜像安装 路由器有没有辐射 mac画图软件 迅雷去广告版 mac版matlab 脚本网站 超级网游助手 文件批量更名 微信摇骰子 淘新闻下载 php上传文件 csgo帧数显示
当前位置: 首页 > 学习教程  > python

python 数据抓取三种方法

2021/2/7 10:24:32 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

三种数据抓取的方法 正则表达式(re库)BeautifulSoup(bs4)lxml *利用之前构建的下载网页函数,获取目标网页的html,我们以https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/为例,获取html。 from…

三种数据抓取的方法

  1. 正则表达式(re库)
  2. BeautifulSoup(bs4)
  3. lxml

*利用之前构建的下载网页函数,获取目标网页的html,我们以https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/为例,获取html。

在这里插入图片描述

from get_html import download

url = 'https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/'
page_content = download(url)

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

from get_html import download
import re

url = 'https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/'
page_content = download(url)
country = re.findall('class="h2dabiaoti">(.*?)</h2>', page_content) #注意返回的是list
survey_data = re.findall('<tr><td bgcolor="#FFFFFF" id="wzneirong">(.*?)</td></tr>', page_content)
survey_info_list = re.findall('<p>  (.*?)</p>', survey_data[0])
survey_info = ''.join(survey_info_list)
print(country[0],survey_info)

2.BeautifulSoup(bs4)

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

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写网络爬虫》中对三种方法的性能对比,如下图:
在这里插入图片描述
仅供参考。


本文链接: http://www.dtmao.cc/news_show_2000221.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?