前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python爬虫-beautifulsoup使用

python爬虫-beautifulsoup使用

作者头像
火星娃统计
发布2020-09-15 15:53:16
8980
发布2020-09-15 15:53:16
举报
文章被收录于专栏:火星娃统计火星娃统计

python爬取天气

概述

对beautifulsoup的简单使用,beautifulsoup是爬虫中初学者使用的一个第三方库,操作简单,代码友好。 将代码包含到函数中,通过调用函数,实现重复爬取

代码

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup
# pandas库,用于保存数据,同时这也是基础库
import pandas as pd
# 获取数据

# 获取网页源代码
def get_data(url):
    resp=requests.get(url)
    #utf-8不支持
    html=resp.content.decode('gbk')
    # 对原始的html文件进行解析
    # html.parser是自带的解析器,可能会简析速度较慢
    soup=BeautifulSoup(html,'html.parser')
    # 通过find_all函数寻找所有的tr标签
    tr_list=soup.find_all('tr')
    # 命名三个列表用于接收数据
    dates,conditions,temp=[],[],[]
    for data in tr_list[1:]:
        sub_data=data.text.split()
        dates.append(sub_data[0])
        conditions.append(''.join(sub_data[1:3]))
        temp.append(''.join(sub_data[3:6]))
    # 建立空数据框用于存放数据
    _data=pd.DataFrame()
    _data['日期']=dates
    _data['天气']=conditions
    _data['温度']=temp
    # 返回数据
    return _data

data1=get_data('http://www.tianqihoubao.com/lishi/beijing/month/201101.html')
data2=get_data('http://www.tianqihoubao.com/lishi/beijing/month/201102.html')
data3=get_data('http://www.tianqihoubao.com/lishi/beijing/month/201103.html')
# 将三个数据框通过concat连接,并重新设置索引
df=pd.concat([data1,data2,data3]).reset_index(drop=True)


# 数据预处理
# 将温度通过/进行分列
df['最高温度']=df['温度'].str.split('/',expand=True)[0]
df['最低温度']=df['温度'].str.split('/',expand=True)[1]
# 通过map函数对温度中的℃进行替换并转换为数字,方便后面的分析
df['最高温度']=df['最高温度'].map(lambda x:int(x.replace('℃','')))
df['最低温度']=df['最低温度'].map(lambda x:int(x.replace('℃','')))


# 保存
df.to_csv('./python/爬取天气数据/beijing.csv',index=False,encoding='utf-8')

# 用到时的读取
pd.read_csv('./python/爬取天气数据/beijing.csv')

结束语

关于爬虫的所有项目均为实践项目,没有理论,想法是基础理论很容易过期,啃教材感觉有点费力,好多项目都变更了,而且有些爬虫是基于python2的,因此这样的方式可能是最好的途径了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 火星娃统计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • python爬取天气
    • 概述
      • 代码
      • 结束语
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档