2019年6月14日23:08:57更新
代码出现不能够爬取数据问题
(已解决)加入headers ,因为网站开始反爬,所以加上请求头即可解决。
记录一下自己学习历程吧..
今天闲着没事把以前写的爬取天气的一个爬虫写成了一个能查询一周天气的exe..
给大家上个图..
实现起来很简单
就是bs4+requests
下边代码如果经过修改之后可以爬取某地几年内的历史天气数据
然后对某地历史天气情况进行建模分析
如果实在不懂也可以给我留言我给你修改...
等我学会tkinter之后,我一定会把我写的全部换成GUI界面..
我一定不用cmd来显示了..
看起来实在是不方便
代码写的可能比较乱
也请大神们勿喷..
另外非常感谢老师和同学们对我的指导
#=============================================================================
# FileName: weather1.py
# Info: py3.6
# Author: BertF
# Version: 0.0.2
# LastChange:2018/05/05
# History:00
#=============================================================================
import requests
import codecs
import os
from bs4 import BeautifulSoup
import random
user_agent = [
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
]
headers = {'User-Agent': random.choice(user_agent)}
urls = []
a="https://tianqi.911cha.com/"
b=input("请输入要查看的城市:(输入拼音)")
url=a+str(b)
urls.append(url)
print("时间,天气,温度,湿度,风力,风级,降水量,体感温度,云量")
for url in urls:
response = requests.get(url,headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
weather_list = soup.select('div[class="mcon noi"] table')
for weather in weather_list:
weather_date = weather.select('tr')[0].getText()
tr_list = weather.select('tr')
i=0
for tr in tr_list:
td_list= tr.select('td')
th_list=tr.select('th')
str=""
for th in th_list:
str+=th.getText()+'n'
for td in td_list:
str += td.getText()+" "
if i!=0:
print(str+'n')
i+=1
os.system("pause")
嘿嘿最近文章写的有点少,因为大部分精力在写关于爬虫的东西,推一下自己建立的公众号吧!