鱼C论坛

 找回密码
 立即注册
查看: 306|回复: 10

求求解决爬虫代码问题

[复制链接]
发表于 2025-1-11 17:15:34 | 显示全部楼层 |阅读模式

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

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

x
import requests
from bs4 import BeautifulSoup
import jieba
url="https://movie.douban.com/subject/26420675/"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"}
response=requests.get(url,headers=headers)
html=response.text
soup=BeautifulSoup(html,"lxml")
content_all=soup.find_all(class_="short-content")
wordList=[]
for content in content_all:
    contentString=content.get_text(strip=True)
    words=jieba.lcut(contentString)
    wordList+=words
letter={}
for word in wordList:
    if len(word)>1:
        if word not in letter:
            letter[word]=1
        else:
            letter[word]+=1
from pyecharts.charts import WordCloud
wd=WordCloud()
wd.add(series_name="影评",data_pair=letter.items(),word_size_range=[12,70])
wd.render("古剑奇谭影评.html")

想请问各位大佬,为啥我这段爬虫代码运行结果是can not  import name iterable from collections呢?我根本没有导入这个库呀!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-1-11 17:15:49 | 显示全部楼层
这个错误可能与您使用的某个库版本有关,其中一个常见原因是 `pyecharts` 的依赖库版本不兼容。在最新的 Python 版本中,`collections.Iterable` 已被移除,因此使用该属性的老版本库会出现错误信息。

您还存在一些代码问题,以下是对代码进行修正及优化的建议:

1. **变量初始化**:`wordList` 变量需要先初始化为空列表。
2. **变量命名错误**:`letter` 字典中的计数逻辑有误,应该是 `letters[word] = 1` 和 `letters[word] += 1`。
3. **`word_size_range` 参数缺失**:需要为 `WordCloud` 添加适当的 `word_size_range`。

以下是修正后的代码:

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import jieba
  4. from pyecharts.charts import WordCloud

  5. url = "https://movie.douban.com/subject/26420675/"
  6. headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"}
  7. response = requests.get(url, headers=headers)
  8. html = response.text
  9. soup = BeautifulSoup(html, "lxml")

  10. content_all = soup.find_all(class_="short-content")

  11. wordList = []  # 初始化为空列表

  12. for content in content_all:
  13.     contentString = content.get_text(strip=True)
  14.     words = jieba.lcut(contentString)
  15.     wordList += words  # 拼接列表

  16. letters = {}
  17. for word in wordList:
  18.     if len(word) > 1:
  19.         if word not in letters:
  20.             letters[word] = 1  # 初始化计数
  21.         else:
  22.             letters[word] += 1  # 计数加1

  23. wd = WordCloud()
  24. wd.add(series_name="影评", data_pair=letters.items(), word_size_range=[20, 100])
  25. wd.render("古剑奇谭影评.html")
复制代码


您还可以检查是否有必要更新 `pyecharts` 或其他相关依赖库,以避免兼容性问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-11 18:12:00 | 显示全部楼层
我已经把pyecharts更新到最新版本了,还是不行,这要怎么解决呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-11 18:12:08 | 显示全部楼层
ljydxxzl 发表于 2025-01-11 18:12
我已经把pyecharts更新到最新版本了,还是不行,这要 ...


即使更新了 `pyecharts`,如果依赖的其他库不兼容,依然可能出现此问题。您可以尝试以下解决方案:

1. **安装特定版本的依赖库**:

   尝试安装一个与 `pyecharts` 兼容的老版本 `pandas`,因为问题通常出在 `pandas` 的版本上:

  
  1. pip install pandas==1.2.5
复制代码


2. **使用其他库进行词云绘制**:

   如果仍然不行,可以考虑使用另一个词云库,例如 `wordcloud`。

  
  1. from wordcloud import WordCloud
  2.    import matplotlib.pyplot as plt

  3.    text = " ".join(wordList)
  4.    wordcloud = WordCloud(font_path='simhei.ttf', width=800, height=600).generate(text)

  5.    plt.imshow(wordcloud, interpolation='bilinear')
  6.    plt.axis("off")
  7.    plt.show()
复制代码


3. **检查Python和第三方库版本的兼容性**:

   确保使用的库是与您的 Python 版本兼容的。如果某库在高版本的 Python 中已弃用某些功能,考虑安装合适版本的库或降级到支持的 Python 版本。

尝试以上方法,希望能帮助您解决问题!如果问题仍然存在,请提供更多上下文或错误信息。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-11 18:49:58 | 显示全部楼层
ljydxxzl 发表于 2025-1-11 18:12
我已经把pyecharts更新到最新版本了,还是不行,这要怎么解决呢?

换个库
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-11 22:20:29 | 显示全部楼层
如何查看自己的python版本兼容的是哪个库呢?我的python版本是3.12,应该安装哪个版本的库呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-11 22:31:40 | 显示全部楼层

回帖奖励 +2 鱼币

ljydxxzl 发表于 2025-1-11 22:20
如何查看自己的python版本兼容的是哪个库呢?我的python版本是3.12,应该安装哪个版本的库呢?

太新了,用3.11
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-11 22:32:41 | 显示全部楼层
ljydxxzl 发表于 2025-1-11 22:20
如何查看自己的python版本兼容的是哪个库呢?我的python版本是3.12,应该安装哪个版本的库呢?

3.12很多不兼容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-12 15:35:01 | 显示全部楼层
最好是把完整的报错粘出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-12 19:06:55 | 显示全部楼层

回帖奖励 +2 鱼币

6
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2025-1-13 19:47:42 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-13 01:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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