查看北京 的天气,查看页面的元素,找到需爬取的内容所在的标签:
提取上图框着内容,具体实现代码如下:
# 导入相关的包
import requests
import bs4
from bs4 import BeautifulSoup
import warnings
warnings.filterwarnings('ignore')
#定义获取页面内容的方法
def getHTMLText(url):
try:
r = requests.get(url, timeout=30,verify=False)
# #如果状态不是200,就会引发HTTPError异常
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
# 爬取 北京的天气
url = 'https://tianqi.so.com/weather/101010100'
html = getHTMLText(url)
soup = BeautifulSoup(html, 'lxml')
# 提取目标值
content_list = soup.find_all('ul', class_='weather-columns')
#格式化输出
tplt = "{0:^8}\t{1:^8}\t{2:^8}\t{3:^8}\t{4:^8}"
print(tplt.format('日期','天气情况','温度','天气质量','凤向情况'))
for c in content_list:
tmp = c.get_text()
t0 = tmp.strip().split()[0] + tmp.strip().split()[1]
t1 = tmp.strip().split()[2]
t2 = tmp.strip().split()[3].split('℃')[0] + '℃'
t3 = tmp.strip().split()[3].split('℃')[1][0]
t4 = tmp.strip().split()[3].split('℃')[1][1:] + " "+tmp.strip().split()[4]
print(tplt.format(t0,t1,t2,t3,t4))
结果如下: