Python:使用 BeautifulSoup 库抓取百度天气
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python:使用 BeautifulSoup 库抓取百度天气,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2250字,纯文字阅读大概需要4分钟。
内容图文
最近研究了Python的BeautifulSoup库,用起来还挺好玩的
一、安装:使用pip命令在线安装;在cmd窗口中输入:pip install beautilfulsoup4
二、代码思路:
1.使用request获取相关网页的返回值,即HTML对象; 方法一
2.通过BeautifulSoup库对HTML页面元素进行解析,需要先分析要抓取的内容在哪里,再通过代码获取,存储在列表中;方法二
3.读取列表中内容,写入到csv文件中。方法三
```python
from bs4 import BeautifulSoup
import requests
import csv
import xlwt
def GetContent(url):
res=requests.get(url)
# print(res.encoding) # 查看res编码,如果不是utf-8,要在这里修改编码
res.encoding='utf-8'
return res.text
#将页面对象传入,通过beautifulSoup解析,获取对应的标签值,然后写入的excel中。
def GetWeath(html):
final_data=[]
soup=BeautifulSoup(html,"html.parser") # 创建 BeautifulSoup对象
# 1)查看源代码,找到最贴近需要爬取信息的外层的一个唯一标签; 2)然后使用findall找到对应每天的标签
data=soup.find('ul',{"class":"t clearfix"})
li=data.find_all("li")
#遍历li标签,每一个li标签对应一天的天气状况
for day in li:
item=[]
date=day.find("h1").string#zz找到日期,对应哪一天
item.append(date)
info=day.find_all("p") #找到天气状况,并追加
item.append(info[0].string)
#判断最高温度是否为空,为空则不写入,否则写入;追加最高和最低温度;
if info[1].find("span") is None:
temperature_highest=None
else:
temperature_highest=info[1].find("span").string
temperature_lowest = info[1].find('i').string
item.append(temperature_highest)
item.append(temperature_lowest)
#追加每次的数据
final_data.append(item)
# print(final_data)
return final_data
# 将结果写入到csv文件中;注意编码格式;
def WriteCsv(title,data,filename):
'''
:param title: 第一行:标题;仅写入一次即可;
:param data: 要写入的数据,列表形式,有多行多列;
:param filename: 文件名;
:return:
'''
with open(filename,'w',newline='',encoding='utf_8_sig')as file:
file_csv=csv.writer(file)
file_csv.writerow(title)
file_csv.writerows(data)
if __name__ == '__main__':
url = 'http://www.weather.com.cn/weather/101120101.shtml'
title=['日期','天气情况','最高气温','最低气温'] #csv文件的标题栏
html=GetContent(url)
data=GetWeath(html)
WriteCsv(title,data,"result_weath.csv")
```
效果图:
内容总结
以上是互联网集市为您收集整理的Python:使用 BeautifulSoup 库抓取百度天气全部内容,希望文章能够帮你解决Python:使用 BeautifulSoup 库抓取百度天气所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。