鱼C论坛

 找回密码
 立即注册
查看: 2590|回复: 3

[已解决]爬虫乱码问题

[复制链接]
发表于 2023-7-24 12:11:54 | 显示全部楼层 |阅读模式

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

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

x
这是我的代码:
  1. import requests
  2. headers = {
  3.     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari'
  4. }
  5. url = "https://www.ibiquges.net/92/92881/"
  6. # url2 = "https://www.yingsx.com/6_6177/2565514.html"
  7. response = requests.get(url=url, headers=headers)

  8. print(response.text)
复制代码


爬出来的结果却是一堆乱码,类似于:
  1. 第四百三十章 神婴复苏计划(第三更!求月票!ï¼
复制代码


以前都没有的,这是怎么了
最佳答案
2023-7-24 12:12:15
爬虫乱码问题:

你遇到的乱码问题通常是由于网页编码与你的代码解码方式不匹配导致的。以下是一些可能导致乱码的原因和解决方法:

1. 网页编码问题:网页可能使用了不同的编码方式(如UTF-8、GBK等)。你可以尝试指定正确的编码方式来解决。在requests.get()函数中,可以使用response.encoding属性来指定网页编码方式。

  
  1.    response.encoding = 'utf-8'  # 或者其他合适的编码方式
  2.    
复制代码

   通过将response.encoding设置为正确的编码方式,可以使得response.text以正确的编码方式解码网页内容。

2. 响应头中未指定编码方式:有时候,网页的响应头中未正确地指定编码方式。你可以尝试手动设置编码方式来解决。

  
  1.    response.encoding = response.apparent_encoding
  2.    
复制代码

   response.apparent_encoding会根据网页内容自动检测出合适的编码方式。

3. 数据传输问题:在网络传输中,如果数据包含非ASCII字符,可能会导致乱码。你可以尝试使用response.content而不是response.text来获取二进制数据,然后再进行解码。

  
  1.    content = response.content
  2.    text = content.decode('utf-8')  # 或者其他合适的编码方式
  3.    
复制代码

   这样可以确保正确地将二进制数据解码为字符串。

请尝试以上方法,并根据你遇到的具体情况选择适合的解决方法。希望这些解决方案能够帮助你解决乱码问题。如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-24 12:12:15 | 显示全部楼层    本楼为最佳答案   
爬虫乱码问题:

你遇到的乱码问题通常是由于网页编码与你的代码解码方式不匹配导致的。以下是一些可能导致乱码的原因和解决方法:

1. 网页编码问题:网页可能使用了不同的编码方式(如UTF-8、GBK等)。你可以尝试指定正确的编码方式来解决。在requests.get()函数中,可以使用response.encoding属性来指定网页编码方式。

  
  1.    response.encoding = 'utf-8'  # 或者其他合适的编码方式
  2.    
复制代码

   通过将response.encoding设置为正确的编码方式,可以使得response.text以正确的编码方式解码网页内容。

2. 响应头中未指定编码方式:有时候,网页的响应头中未正确地指定编码方式。你可以尝试手动设置编码方式来解决。

  
  1.    response.encoding = response.apparent_encoding
  2.    
复制代码

   response.apparent_encoding会根据网页内容自动检测出合适的编码方式。

3. 数据传输问题:在网络传输中,如果数据包含非ASCII字符,可能会导致乱码。你可以尝试使用response.content而不是response.text来获取二进制数据,然后再进行解码。

  
  1.    content = response.content
  2.    text = content.decode('utf-8')  # 或者其他合适的编码方式
  3.    
复制代码

   这样可以确保正确地将二进制数据解码为字符串。

请尝试以上方法,并根据你遇到的具体情况选择适合的解决方法。希望这些解决方案能够帮助你解决乱码问题。如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-24 12:12:16 | 显示全部楼层
根据你提供的代码和描述,你遇到的问题是爬虫乱码的情况。乱码通常是由于编码方式不匹配导致的。

在你的代码中,你使用了requests库发送了一个GET请求,并指定了请求头部信息。然后你将响应的文本内容打印出来,但是得到的结果是乱码。

可能的原因是网页的编码方式与默认的编码方式不匹配。在处理这种情况时,你可以尝试以下方法:

1. 指定正确的编码方式:查看网页的源代码或者响应头中是否包含了编码信息,例如charset字段。根据这个编码信息,你可以使用requests库的encoding属性将响应内容的编码方式进行指定,以确保正确解码。例如,如果网页使用UTF-8编码,可以添加response.encoding = 'utf-8'来指定编码方式。

2. 使用其他解析库:如果指定编码方式后仍然无法正确解码,你可以尝试使用其他的解析库来处理乱码问题。例如,你可以使用beautifulsoup4库对网页进行解析,它可以自动处理编码问题。首先,需要安装该库:pip install beautifulsoup4。然后,你可以使用以下代码来解析网页内容:

  1. from bs4 import BeautifulSoup
  2. import requests

  3. url = "https://www.ibiquges.net/92/92881/"
  4. headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari'}

  5. response = requests.get(url=url, headers=headers)
  6. soup = BeautifulSoup(response.content, 'html.parser')  # 使用BeautifulSoup进行解析
  7. text = soup.get_text()  # 获取网页文本内容

  8. print(text)
复制代码


这样,你可以使用BeautifulSoup库解析网页,并获取到正确的文本内容。

希望这些解决方法对你有帮助!如果还有任何问题,请随时提问。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-24 12:12:17 | 显示全部楼层
你遇到的问题可能是由于网站使用了不同的字符编码,而你的代码中没有正确处理这种情况。在Python中,我们通常使用 response.content.decode('编码方式') 来进行编码转换。在这个案例中,网站很可能使用了'utf-8'编码。

所以你的代码可以修改如下:

  1. import requests
  2. headers = {
  3.     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari'
  4. }
  5. url = "https://www.ibiquges.net/92/92881/"
  6. response = requests.get(url=url, headers=headers)

  7. print(response.content.decode('utf-8'))
复制代码


如果你不能确定网页的编码方式,你也可以尝试使用 chardet 库来猜测和获取网页的编码:

  1. import requests
  2. import chardet
  3. headers = {
  4.     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari'
  5. }
  6. url = "https://www.ibiquges.net/92/92881/"
  7. response = requests.get(url=url, headers=headers)

  8. encoding = chardet.detect(response.content)['encoding']
  9. print(response.content.decode(encoding))
复制代码


这样你的代码会根据实际的编码方式来解码网页内容。希望这对你有所帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-23 12:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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