一、爬取目标
本文旨在通过 Python 编写爬虫程序,抓取中国农药信息网(ICAMA)的农药登记数据。该网站提供了详细的农药产品登记信息,包括登记证号、农药名称、类别、剂型、含量及有效期等关键数据。通过自动化脚本提取这些数据并保存为 CSV 文件,可方便地进行后续的数据分析或整理。
二、环境准备
在开始之前,请确保已安装以下 Python 库:
requests:用于发送 HTTP 请求。lxml:用于解析 HTML 文档,支持 XPath 查询。prettytable:用于在控制台美观地打印表格数据。csv:Python 标准库,用于处理 CSV 文件读写。
安装命令如下:
pip install requests lxml prettytable
三、完整源码
以下是完整的 Python 脚本代码,包含请求发送、数据解析、结果打印及文件保存功能。
import csv
import requests
from lxml import etree
from prettytable import PrettyTable
def getData(baseUrl, data, headers):
"""
发送 POST 请求并解析返回的 HTML 表格数据
:param baseUrl: 请求地址
:param data: 请求载荷参数
:param headers: 请求头信息
:return: 解析后的列表数据
"""
response = requests.post(url=baseUrl, data=data, headers=headers)
# 设置响应编码,防止乱码
response.encoding = 'utf-8'
html = etree.HTML(response.text)
# 定位表格中的行
trs = html.xpath("//table[@id='tab']/tr")
result_data = []
for index, tr in enumerate(trs):
text = tr.xpath("td//text()")
# 跳过表头行 (index != 0)
if index != 0 and len(text) > 7:
# 根据实际页面结构提取对应列的数据
# 注意:索引可能随页面更新变化,需根据实际情况调整
row = [
text[1].strip(), # 登记证号
text[],
text[],
text[],
text[],
text[],
text[].strip()
]
result_data.append(row)
result_data
():
table = PrettyTable()
table.field_names = [, , , , , , ]
table.add_rows(result)
(table)
():
filename =
:
(filename, , encoding=, newline=) file:
writer = csv.writer(file)
writer.writerows(result)
()
Exception e:
()
():
baseUrl =
headers = {
: ,
:
}
data = (
)
()
result = getData(baseUrl, data, headers)
result:
printData(result)
saveData(result)
:
()
__name__ == :
main()


