鱼C论坛

 找回密码
 立即注册
查看: 2999|回复: 4

[已解决]乱码

[复制链接]
发表于 2023-5-14 11:32:03 | 显示全部楼层 |阅读模式

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

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

x
现象:
Snipaste_2023-05-14_11-31-03.png
源代码:
  1. from selenium.webdriver import Chrome, ChromeOptions
  2. from bs4 import BeautifulSoup
  3. from pandas import DataFrame
  4. from time import sleep


  5. options = ChromeOptions()
  6. options.add_argument("headless")
  7. driver = Chrome(options=options)

  8. url = 'https://movie.douban.com/explore'
  9. driver.get(url)

  10. sleep(2)

  11. source = driver.page_source

  12. soup = BeautifulSoup(source, 'lxml')
  13. names = soup.select('.drc-subject-info-title-text')
  14. names = [name.text for name in names]
  15. types = soup.select('.drc-subject-info-subtitle')
  16. types = [movieType.text for movieType in types]

  17. data = []
  18. for i, name in enumerate(names):
  19.     data.append([name, types[i]])

  20. df = DataFrame(data)
  21. df.to_csv('1.csv', encoding='utf-8')

  22. driver.quit()
复制代码

(曾多次运行,仍未解决)
最佳答案
2023-5-14 11:32:29
这个问题可能是由于输出到csv文件时使用的编码不正确导致的。请尝试使用UTF-8-sig编码来保存csv文件,即将 encoding='utf-8' 改为 encoding='utf-8-sig' 。

修改后的代码如下:
  1. from selenium.webdriver import Chrome, ChromeOptions
  2. from bs4 import BeautifulSoup
  3. from pandas import DataFrame
  4. from time import sleep
  5. options = ChromeOptions()
  6. options.add_argument("headless")
  7. driver = Chrome(options=options)
  8. url = 'https://movie.douban.com/explore'
  9. driver.get(url)
  10. sleep(2)
  11. source = driver.page_source
  12. soup = BeautifulSoup(source, 'lxml')
  13. names = soup.select('.drc-subject-info-title-text')
  14. names = [name.text for name in names]
  15. types = soup.select('.drc-subject-info-subtitle')
  16. types = [movieType.text for movieType in types]
  17. data = []
  18. for i, name in enumerate(names):
  19.     data.append([name, types[ i]])
  20. df = DataFrame(data)
  21. df.to_csv('1.csv', encoding='utf-8-sig')
  22. driver.quit()
复制代码

这样应该就能够正确保存csv文件了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-14 11:32:29 | 显示全部楼层    本楼为最佳答案   
这个问题可能是由于输出到csv文件时使用的编码不正确导致的。请尝试使用UTF-8-sig编码来保存csv文件,即将 encoding='utf-8' 改为 encoding='utf-8-sig' 。

修改后的代码如下:
  1. from selenium.webdriver import Chrome, ChromeOptions
  2. from bs4 import BeautifulSoup
  3. from pandas import DataFrame
  4. from time import sleep
  5. options = ChromeOptions()
  6. options.add_argument("headless")
  7. driver = Chrome(options=options)
  8. url = 'https://movie.douban.com/explore'
  9. driver.get(url)
  10. sleep(2)
  11. source = driver.page_source
  12. soup = BeautifulSoup(source, 'lxml')
  13. names = soup.select('.drc-subject-info-title-text')
  14. names = [name.text for name in names]
  15. types = soup.select('.drc-subject-info-subtitle')
  16. types = [movieType.text for movieType in types]
  17. data = []
  18. for i, name in enumerate(names):
  19.     data.append([name, types[ i]])
  20. df = DataFrame(data)
  21. df.to_csv('1.csv', encoding='utf-8-sig')
  22. driver.quit()
复制代码

这样应该就能够正确保存csv文件了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-14 11:33:14 | 显示全部楼层
isdkz 发表于 2023-5-14 11:32
这个问题可能是由于输出到csv文件时使用的编码不正确导致的。请尝试使用UTF-8-sig编码来保存csv文件,即将  ...

gpt有问题,点击“复制代码”换行全没了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-14 11:37:26 | 显示全部楼层
如果导出 csv 文件中出现了乱码,可以尝试修改 to_csv 中的参数 encoding='utf-8' 为其他编码方式,如 gbk、gb2312 等,因为 Excel 打开 csv 文件时默认使用的编码方式可能与 utf-8 不同。如果代码本身输出结果为乱码,则需要确认网页的编码方式,并在 BeautifulSoup 解析时指定正确的编码方式,如 'gbk'、'gb2312' 等。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-14 11:40:28 | 显示全部楼层
歌者文明清理员 发表于 2023-5-14 11:33
gpt有问题,点击“复制代码”换行全没了

你可以不要复制它的代码,直接把你原来代码的 encoding='utf-8' 改成 encoding='utf-8-sig'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-28 19:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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