爬取中国天气网,获取相关信息,并通过相关库,进行在线搜索。
import sys
import requests
from bs4 import BeautifulSoup
from xpinyin import Pinyin
# antuor : Comiii
# date : 2018/12/15
# purpose : university competition
"""<div class="left">
<dl class="weather_info">
<dt><img src="http://content.pic.tianqistatic.com/content/20170918/0f64a9643cd8a42fa5f52fddd4ddc8ee.jpg" alt="成都天气预报"></dt>
<dd class="name"><h2>成都</h2><i><a href="/chinacity.html">[切换城市]</a></i></dd>
<dd class="week">2018年12月16日 星期日 戊戌年冬月初十 </dd>
<dd class="weather">
<i><img src="//static.tianqistatic.com/static/wap2018/ico1/b0.png" ></i>
<p class="now"><b>5</b><i>℃</i></p>
<span><b>晴</b>4 ~ 14℃</span>
</dd>
<dd class="shidu"><b>湿度:99%</b><b>风向:西南风 2级</b><b>紫外线:强</b></dd>
<dd class="kongqi" >
<h5 style="background-color:#ffbb17;">空气质量:良</h5>
<h6>PM: 100</h6>
<span>日出: 07:54<br />日落: 18:04</span>
</dd>
<dl>
"""
class Weather:
location = 'chengdu'
date = ""
soup = ""
humidity = ""
quanity = ""
now = ""
def __init__(self, place):
pin = Pinyin() # 将汉字转换成拼音
place = pin.get_pinyin(place, "")
url = "http://www.tianqi.com/" + place
# print(url)
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537',
'Referer':'www.tianqi.com'}
r = requests.get(url, header, timeout=60)
self.soup = r.text
# print(self.soup)
self.check()
def check(self):
# 爬取信息并进行分割,格式化
self.soup = BeautifulSoup(self.soup, "html.parser")
try:
for div in self.soup.find_all('div', {'class': 'left'}):
self.location = div.find('dd', {'class': 'name'}).text[:-6]
print(self.location)
self.date = div.find('dd', {'class': 'week'}).text
print(self.date)
self.humidity = div.find('dd', {'class': 'shidu'}).text
print(self.humidity[:-14])
print(self.humidity[6:15])
print(self.humidity[15:20])
self.now = div.find('dd', {'class': 'weather'}).text
self.now.replace("\r", "")
print(self.now[2:5])
print(self.now[6:7])
print(self.now[7:14])
self.quanity=div.find('dd', {'class': 'kongqi'}).text
print(self.quanity[0:6])
print(self.quanity[6:12])
print(self.quanity[12:])
except:
print("")
if __name__ == '__main__':
# 这里是java,jython和python连用 可以直接声明对象即可!
# a = []
# for i in range(1, len(sys.argv)):
# a.append(sys.argv[i])
# Weather(a[0])
weather("成都")