长春做网站推广,企业网站建设xplogo,网站开发案例及分析,网络营销方式多样本篇文章是学习文本数据的采集#xff0c;作为人工智能训练师或者数据分析师有时需要先获取数据#xff0c;然后进行数据清洗、数据标注。很明显数据采集是后续步骤的基础。 1#xff09;数据采集定义
数据采集#xff1a;data acquisition#xff0c;DAQ 又称为数据获取… 本篇文章是学习文本数据的采集作为人工智能训练师或者数据分析师有时需要先获取数据然后进行数据清洗、数据标注。很明显数据采集是后续步骤的基础。 1数据采集定义
数据采集data acquisitionDAQ 又称为数据获取是利用一种装置从系统外部采集数据并输入系统内部的一个接口。数据采集技术广泛应用于各个领域。 2数据采集实例
假如我们需要获取佛山市当天的天气情况像天气是晴天还是多云天气的气温以及风速。
步骤请求网站获取HTML信息 》使用beautifulsoup解析HTML内容并找出我们需要的内容 》保存到csv 文件中 a、需要安装Requests 库、beautifulsoup库
可以pip install requests
也可以直接在pycharm 里面导入时提示没有库点击后安装 点击后安装成功对应的库名下面就没有下划线了 同样的方法也可以安装别的库。 b、Requests 库使用方法
在Python中requests模块是一个非常流行的第三方库用于发送HTTP请求。它提供了一个简单而强大的接口来与HTTP服务器进行交互。
requests.get() 是获取 HTML网页信息的主要方法
r requests.geturl,params None,**kwargs:
url:要获取页面的url
params :为字典或者字节序列作为参数增加到url中
r为返回的一个包含服务器资源的response对象 import requests # 请求天气的网址 url https://www.weather.com.cn/weather/101280800.shtml r requests.get(url,timeout10) print(r) print(r.text) #网页上获取的全部内容 c、Beautifulsoup 使用方式
Python中的BeautifulSoup是一个非常流行的库用于解析HTML和XML文档。它提供了一个简单的API来提取数据。
在使用BeautifulSoup之前你需要先安装这个库。如果你还没有安装可以通过pip来安装pip install beautifulsoup4
导入BeautifulSoup
在你的Python脚本中首先需要导入BeautifulSoup和解析器如lxml或html.parser
from bs4 import BeautifulSoup 解析HTML或XML文档
你可以使用BeautifulSoup类来解析HTML或XML文档。通常你需要传递文档内容和解析器类型给BeautifulSoup的构造函数。
# 示例HTML文档
html_doc
html
head
titleThe Dormouses story/title
/head
body
p classtitlebThe Dormouses story/b/p
p classstoryOnce upon a time there were three little sisters; and their names were
a hrefhttp://example.com/elsie classsister idlink1Elsie/a,
a hrefhttp://example.com/lacie classsister idlink2Lacie/a and
a hrefhttp://example.com/tillie classsister idlink3Tillie/a;
and they lived at the bottom of a well./p
p classstory.../p
/body
/html # 使用html.parser解析器解析HTML文档
soup BeautifulSoup(html_doc, html.parser)
查找元素
BeautifulSoup提供了多种方法来查找元素包括但不限于
find(): 返回第一个匹配的标签。
find_all(): 返回所有匹配的标签。
find_parent(), find_parents(): 查找父标签。
find_next_sibling(), find_next_siblings(): 查找下一个兄弟标签。
find_previous_sibling(), find_previous_siblings(): 查找前一个兄弟标签。
select(): 使用CSS选择器查找元素。 示例使用find()和find_all()
# 查找第一个a标签
first_link soup.find(a)
print(first_link) # a classsister hrefhttp://example.com/elsie idlink1Elsie/a # 查找所有a标签
all_links soup.find_all(a)
for link in all_links: print(link) # 打印所有a标签的详细信息 示例使用select()CSS选择器
# 使用CSS选择器查找所有class为sister的a标签
sisters soup.select(a.sister)
for sister in sisters: print(sister[href], sister.text) # 打印链接和文本内容 获取和修改属性及内容
你可以轻松获取或修改元素的属性或内容。 # 获取元素的属性值
href first_link[href] # 获取href属性值
print(href) # http://example.com/elsie # 修改元素的属性值或内容
first_link[href] http://newexample.com/elsie # 修改href属性值
first_link.string Elsie New # 修改a标签内的文本内容为Elsie New
3) 编写脚本
获取佛山市当天的天气情况像天气是晴天还是多云天气的气温以及风速。
参考代码 #网页请求函数 def get_html_text(url): try: r requests.get(url,timeout30) r.raise_for_status() r.encoding utf-8 print(访问网页成功) return r.text except: return 访问异常
#数据存放到csv文件中 def write_to_csv(file_name,data,day1): if not os.path.exists(file_name): with open(file_name,w,errorsignore,newline) as f: if day1: header [最高温度,最低温度,天气情况,风速] f_csv csv.writer(f) f_csv.writerow(header) f_csv.writerows(data) else: with open(file_name, a, errorsignore, newline) as f: f_csv csv.writer(f) #for i in range(0,len(data)): f_csv.writerows(data)
#主函数
if __name__ __main__: # 请求天气的网址 url https://www.weather.com.cn/weather/101280800.shtml # csv数据保存文件夹 file_direction D:\\dewi\\project2024\\myListPractice\\pythonProject1\\test_data # 打开网页天气预报佛山市 html_text get_html_text(url) print(html_text) # 使用BeautifulSoup解析HTML内容 soup BeautifulSoup(html_text, html.parser) # 获取当天的天气情况 # div classtemperature25°C/div 和 div classhumidity60%/div if soup.find(p, class_tem).span is None: temperature_H 无 #晚上请求的时候可能没有最高温度这里做了判断 else: temperature_H soup.find(p, class_tem).span.string temperature_L soup.find(p, class_tem).i.string # find()这里返回第一个结果最低温度 weather soup.find(p, class_wea).string #天气状态 wind_speed soup.find(p, class_win).i.string #风速 # 获取的数据放到list weather_data [] weather_data.append([temperature_H, temperature_L, weather, wind_speed]) # 列表中包含列表以便后续写入或者使用列表中是字典 print(今天天气情况, weather_data) #保存到csv文件 write_to_csv(file_direction \\weather_data.csv, weather_data, day1) 4进阶练习
如何获取最近7天的最低温度呢
我们可以把它取出来放到列表中。
这里需要使用到find_all(),另外要分清html结构然后用基本语法就可以实现了
HTML结构参考如下 参考代码如下 import requests from bs4 import BeautifulSoup # 请求天气的网址 url https://www.weather.com.cn/weather/101280800.shtml r requests.get(url,timeout20) r.encoding utf-8 print(r) #print(r.text) #网页上获取的全部内容 soup BeautifulSoup(r.text,html.parser) #练习find temprature_low soup.find(p,class_tem).i.string print(第一个最低温度,temprature_low) #练习find_all,7天所有的最低温度 body soup.body #body内容 data body.find(div, {id: 7d})#7天的数据 ul data.find(ul) #找到第一个ul li ul.find_all(li) #找到所有li temprature_7days [] for day in li: temprature_day day.find(p,class_tem).i.string.replace(℃, ) #每天的最低温度 temprature_7days.append(temprature_day) #添加到list.如果是要每天的多个天气情况时可以使用list包含list形式 print(最近7天的天气最低温度,temprature_7days) 每天进步一点点加油