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

文章目录

  • 一 基本定义解释
  • 二 步骤分析
    • 2-1 需求
    • 2-2 方法操作
  • 三 代码

一 基本定义解释

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

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

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

二 步骤分析

2-1 需求

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

python-(6-4-2)爬虫---利用bs4解析获得数据信息_第1张图片

2-2 方法操作

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

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

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

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

我们要获取“最新价格播报”中农产品的相关数据。这里选择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()

你可能感兴趣的:(Python,python,爬虫,开发语言)