python-(6-4-2)爬虫---利用bs4解析获得数据信息

一 基本定义解释

HTML:超文本标记语言,编写网页时最基本最核心的语言,用不同的标签对网页上的不同内容进行标记,从而使网页显示不同的展示效果。

bs4:首先将页面源码加载到BeautifulSoup实例对象中,然后调用BeautifulSoup中对象相关的属性和方法进行标签定位和数据提取

如果没有安装这个库,可以在终端运行命令:pip install bs4

二 步骤分析

2-1 需求

在某平台,提取农产品最新价格播报的数据,包括农产品名称、当前的单位价格、批发市场、价格日期四个信息,并以CSV格式输出

在这里插入图片描述

2-2 方法操作

如果从大方向来说,只需两步:先拿到页面源代码,然后用bs4解析,就能拿到数据。

首先获得网页的URL,再用requests模块的get请求,获得源代码并打开网页。在这里笔者并没有使用headers进行浏览器伪装,但依旧获取了网页内容,可见网站并没有设置反爬机制。但即便如此,也请大家自觉遵守爬虫的规制,仅用于学习且不影响其服务器正常运行的爬虫使用。

在获得数据后,我们打开网页的源代码观察一下。

在这里插入图片描述

我们要获取“最新价格播报”中农产品的相关数据。这里选择table且后面的class="table-01 z-style1"限制了我们要获取对象的范围,分别是标签和属性。

此外,table在 html 中是作为表格形式的存在。tr表示行,td表示列。我们要找的数据是这些行和列中的数据,所以在代码中将会以索引的方式呈现。

最后将其遍历,使用 csv_write 就可以将数据以CSV格式输出。

三 代码

from bs4 import BeautifulSoup
import requests
import csv

# 获取源代码
url = "http://nc.mofcom.gov.cn/jghq/index"
resp = requests.get(url)

# 以写入的方式打开文件
f = open("农产品价格.csv", mode="w")
csv_write = csv.writer(f)

# 指定html解析器,交给bs4处理
page = BeautifulSoup(resp.text,"html.parser")
# 指定标签和属性,从对象中查找数据
table = page.find("table",attrs={"class":"table-01 z-style1"})
# 拿到所有的数据行
trs = table.findAll("tr")

# 遍历每一行
for tr in trs:
    # 拿到每一行的所有td(列)
    tds = tr.find_all("td")
    # 所有被标签标记的内容
    name = tds[0].text
    price = tds[1].text
    place = tds[2].text
    date = tds[3].text
    csv_write.writerow([name,price,place,date])
print("抓取成功!!!")

# 关闭文件,关闭访问请求
f.close()
resp.close()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值