鱼C论坛

 找回密码
 立即注册
查看: 1893|回复: 2

[已解决]为什么会报错啊?你们能试一下吗?求大佬指点

[复制链接]
发表于 2020-4-14 11:41:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. [code]import requests
  2. from bs4 import BeautifulSoup
  3. from pyecharts.charts import Bar

  4. all_data = []


  5. def parse_page(url):  # 解析url页面函数
  6.     headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'}
  7.     response = requests.get(url, headers=headers)
  8.     # print(response.content.decode('utf-8'))#当解码之后的页面有乱码说明用response.test()猜错了解码方式,则应该改成response.content.decode('utf-8')
  9.     text = response.content.decode('utf-8')
  10.     soup = BeautifulSoup(text, 'lxml')
  11.     conMidtab = soup.find('div', class_='conMidtab')
  12.     tables = conMidtab.find_all('table')
  13.     for table in tables:
  14.         trs = table.find_all('tr')[2:]
  15.         for index, tr in enumerate(trs):
  16.             tds = tr.find_all('td')
  17.             city_td = tds[0]
  18.             if index == 0:
  19.                 city_td = tds[1]
  20.             city = list(city_td.stripped_strings)[0]
  21.             temp_td = tds[-2]
  22.             min_temp = list(temp_td.stripped_strings)[0]
  23.             data = all_data.append({'city': city, 'min_temp': int(min_temp)})
  24.             # print({'city':city,'min_temp':int(min_temp)})


  25. def main():
  26.     urls = {'http://www.weather.com.cn/textFC/hb.shtml',
  27.             'http://www.weather.com.cn/textFC/hb.shtml',
  28.             'http://www.weather.com.cn/textFC/db.shtml',
  29.             'http://www.weather.com.cn/textFC/hz.shtml',
  30.             'http://www.weather.com.cn/textFC/xb.shtml',
  31.             'http://www.weather.com.cn/textFC/xn.shtml'
  32.             }
  33.     # url = 'http://www.weather.com.cn/textFC/hb.shtml'
  34.     # url = 'http://www.weather.com.cn/textFC/hn.shtml'
  35.     # url = 'http://www.weather.com.cn/textFC/db.shtml'
  36.     # url = 'http://www.weather.com.cn/textFC/hz.shtml'
  37.     # url = 'http://www.weather.com.cn/textFC/xb.shtml'
  38.     # url = 'http://www.weather.com.cn/textFC/xn.shtml'
  39.     # url = 'http://www.weather.com.cn/textFC/gat.shtml'
  40.     for url in urls:
  41.         parse_page(url)

  42.     all_data.sort(key=lambda data: data['min_temp'])
  43.     data = all_data[0:10]
  44.     cities = list(map(lambda x: x['city'], data))
  45.     temps = list(map(lambda x: x['min_temp'], data))
  46.     chart = Bar('中国气温最低温度排行')
  47.     chart.add('', cities, temps)
  48.     chart.render('temperature1.html')


  49. if __name__ == '__main__':
  50.     main()
复制代码
[/code]



报错是这样的:
Traceback (most recent call last):
  File "C:/Users/lenovo/PycharmProjects/untitled6/SCRAPY/DAY5/2222.py", line 58, in <module>
    main()
  File "C:/Users/lenovo/PycharmProjects/untitled6/SCRAPY/DAY5/2222.py", line 52, in main
    chart = Bar('中国气温最低温度排行')
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyecharts\charts\chart.py", line 163, in __init__
    super().__init__(init_opts=init_opts)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyecharts\charts\chart.py", line 14, in __init__
    super().__init__(init_opts=init_opts)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyecharts\charts\base.py", line 28, in __init__
    self.width = _opts.get("width", "900px")
AttributeError: 'str' object has no attribute 'get'
最佳答案
2020-4-14 12:57:46
这样试试:

  1. import requests
  2. from bs4 import BeautifulSoup
  3. from pyecharts.charts import Bar

  4. all_data = []


  5. def parse_page(url):  # 解析url页面函数
  6.     headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'}
  7.     response = requests.get(url, headers=headers)
  8.     # print(response.content.decode('utf-8'))#当解码之后的页面有乱码说明用response.test()猜错了解码方式,则应该改成response.content.decode('utf-8')
  9.     text = response.content.decode('utf-8')
  10.     soup = BeautifulSoup(text, 'lxml')
  11.     conMidtab = soup.find('div', class_='conMidtab')
  12.     tables = conMidtab.find_all('table')
  13.     for table in tables:
  14.         trs = table.find_all('tr')[2:]
  15.         for index, tr in enumerate(trs):
  16.             tds = tr.find_all('td')
  17.             city_td = tds[0]
  18.             if index == 0:
  19.                 city_td = tds[1]
  20.             city = list(city_td.stripped_strings)[0]
  21.             temp_td = tds[-2]
  22.             min_temp = list(temp_td.stripped_strings)[0]
  23.             data = all_data.append({'city': city, 'min_temp': int(min_temp)})
  24.             # print({'city':city,'min_temp':int(min_temp)})


  25. def main():
  26.     urls = {'http://www.weather.com.cn/textFC/hb.shtml',
  27.             'http://www.weather.com.cn/textFC/hb.shtml',
  28.             'http://www.weather.com.cn/textFC/db.shtml',
  29.             'http://www.weather.com.cn/textFC/hz.shtml',
  30.             'http://www.weather.com.cn/textFC/xb.shtml',
  31.             'http://www.weather.com.cn/textFC/xn.shtml'
  32.             }
  33.     # url = 'http://www.weather.com.cn/textFC/hb.shtml'
  34.     # url = 'http://www.weather.com.cn/textFC/hn.shtml'
  35.     # url = 'http://www.weather.com.cn/textFC/db.shtml'
  36.     # url = 'http://www.weather.com.cn/textFC/hz.shtml'
  37.     # url = 'http://www.weather.com.cn/textFC/xb.shtml'
  38.     # url = 'http://www.weather.com.cn/textFC/xn.shtml'
  39.     # url = 'http://www.weather.com.cn/textFC/gat.shtml'
  40.     for url in urls:
  41.         parse_page(url)

  42.     all_data.sort(key=lambda data: data['min_temp'])
  43.     data = all_data[0:10]
  44.     cities = list(map(lambda x: x['city'], data))
  45.     temps = list(map(lambda x: x['min_temp'], data))
  46.     chart = Bar()
  47.     chart.add_xaxis(cities)
  48.     chart.add_yaxis('中国气温最低温度排行', temps)
  49.     chart.render('temperature1.html')


  50. if __name__ == '__main__':
  51.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-14 12:57:46 | 显示全部楼层    本楼为最佳答案   
这样试试:

  1. import requests
  2. from bs4 import BeautifulSoup
  3. from pyecharts.charts import Bar

  4. all_data = []


  5. def parse_page(url):  # 解析url页面函数
  6.     headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'}
  7.     response = requests.get(url, headers=headers)
  8.     # print(response.content.decode('utf-8'))#当解码之后的页面有乱码说明用response.test()猜错了解码方式,则应该改成response.content.decode('utf-8')
  9.     text = response.content.decode('utf-8')
  10.     soup = BeautifulSoup(text, 'lxml')
  11.     conMidtab = soup.find('div', class_='conMidtab')
  12.     tables = conMidtab.find_all('table')
  13.     for table in tables:
  14.         trs = table.find_all('tr')[2:]
  15.         for index, tr in enumerate(trs):
  16.             tds = tr.find_all('td')
  17.             city_td = tds[0]
  18.             if index == 0:
  19.                 city_td = tds[1]
  20.             city = list(city_td.stripped_strings)[0]
  21.             temp_td = tds[-2]
  22.             min_temp = list(temp_td.stripped_strings)[0]
  23.             data = all_data.append({'city': city, 'min_temp': int(min_temp)})
  24.             # print({'city':city,'min_temp':int(min_temp)})


  25. def main():
  26.     urls = {'http://www.weather.com.cn/textFC/hb.shtml',
  27.             'http://www.weather.com.cn/textFC/hb.shtml',
  28.             'http://www.weather.com.cn/textFC/db.shtml',
  29.             'http://www.weather.com.cn/textFC/hz.shtml',
  30.             'http://www.weather.com.cn/textFC/xb.shtml',
  31.             'http://www.weather.com.cn/textFC/xn.shtml'
  32.             }
  33.     # url = 'http://www.weather.com.cn/textFC/hb.shtml'
  34.     # url = 'http://www.weather.com.cn/textFC/hn.shtml'
  35.     # url = 'http://www.weather.com.cn/textFC/db.shtml'
  36.     # url = 'http://www.weather.com.cn/textFC/hz.shtml'
  37.     # url = 'http://www.weather.com.cn/textFC/xb.shtml'
  38.     # url = 'http://www.weather.com.cn/textFC/xn.shtml'
  39.     # url = 'http://www.weather.com.cn/textFC/gat.shtml'
  40.     for url in urls:
  41.         parse_page(url)

  42.     all_data.sort(key=lambda data: data['min_temp'])
  43.     data = all_data[0:10]
  44.     cities = list(map(lambda x: x['city'], data))
  45.     temps = list(map(lambda x: x['min_temp'], data))
  46.     chart = Bar()
  47.     chart.add_xaxis(cities)
  48.     chart.add_yaxis('中国气温最低温度排行', temps)
  49.     chart.render('temperature1.html')


  50. if __name__ == '__main__':
  51.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 20:21:45 | 显示全部楼层
我看的是之前的视频,以前的版本和现在bar应该有些改变是吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-14 16:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表