Vovid
Vovid
采纳率0%
2017-05-24 09:16 阅读 2.4k

关于python 抓取结果返回只有最后一个的问题

py新手,看着别人写了一个抓数据,遇到的问题是再内部循环中的结果result是正确的,最外部的结果只有内部的最后一个

 # -*- coding:utf-8 -*-
import requests  
from bs4 import BeautifulSoup  

#抓取历史天气
#author wx
#param year 年
#param month 月
def weaFetch(year,month):
    #初始化结果
    result = {}
    #初始话url
    url = 'http://lishi.tianqi.com/beijing/'
    #加入年月得到完整的url
    resultUrl = url + year + month + '.html'
    #得到页面
    res = requests.get(resultUrl)   
    soup = BeautifulSoup(res.text,'html.parser')
    #找到要抓的内容位置
    data = soup.find('div', {'class': 'tqtongji2'})
    #内容集
    ul = data.find_all('ul')
    #每天的天气内容
    for  day in ul[1:]:
        li = day.find_all('li')
        for daydata in li:
            #日期
            result['date'] = li[0].string
             #最高温度
            result['higntemp'] = li[1].string
             #最低温度
            result['lowtemp'] = li[2].string
             #天气
            result['weather'] = li[3].string
             #风向
            result['wind'] = li[4].string
            #风力
            result['windlevel'] = li[5].string
            #print(result)
        #print(result)
    #print(result)
    return result
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • Vovid Vovid 2017-05-24 09:25

    取消内部注释打印正常图片说明
    取消最外边注释打印只有最后一行图片说明

    点赞 评论 复制链接分享
  • Vovid Vovid 2017-05-24 10:01

    感觉没人啊,我去发个帖问问把

    点赞 评论 复制链接分享
  • Vovid Vovid 2017-05-24 10:16

    自己解决了,这个是字典key因为一样所以循环的时候会覆盖前面value的问题,内部循环时再加一个字典接受每次抓取的结果

     resultSet[li[0].string] = result
    

    当然你上边还是要定义一个字典

     resultSet = {}
    
    点赞 评论 复制链接分享

相关推荐