【问题标题】:Python web scraping - UnicodeEncodeErrorPython网页抓取 - UnicodeEncodeError
【发布时间】:2015-12-09 19:12:30
【问题描述】:

我有一个从网站获取链接的代码。问题很少。代码在第二次运行时生成正确的输出。第一次没有输出。其次,我遇到了一个错误。

错误信息:

   traceback (most recent call last):
      File "C:\Users\dell\AppData\Local\Programs\Python\Python35\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 326, in RunScript
        exec(codeObject, __main__.__dict__)
      File "C:\Users\dell\AppData\Local\Programs\Python\Python35\ld.py", line 25, in <module>
        wr.writerows([tag.text])
      File "C:\Users\dell\AppData\Local\Programs\Python\Python35\lib\encodings\cp1252.py", line 19, in encode
        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
    UnicodeEncodeError: 'charmap' codec can't encode character '\x91' in position 410: character maps to <undefined>

代码:

import csv
import urllib.parse
import urllib.request
from bs4 import BeautifulSoup
url = "http://www.dhr.gov.in/"
urls = [url]
visited = [url]
resultFile = open('t5.csv','w', newline ='')
wr = csv.writer(resultFile, delimiter = ' ')
while len(urls)>0:
    try:
        htmltext = urllib.request.urlopen(urls[0]).read()
    except:
        pass    
    soup = BeautifulSoup(htmltext)
    urls.pop(0)
    for tag in soup.findAll('a', href = True):
        tag['href'] = urllib.parse.urljoin(url,tag['href'])
        if url in tag['href']and tag['href'] not in visited:
            urls.append(tag['href'])
            visited.append(tag['href'])
            print([tag['href']])
            print([tag.text])
            wr.writerows([tag['href']])
            wr.writerows([tag.text])
resultFile.close()

【问题讨论】:

  • 我使用的是 python 3.5。也想知道如何设置搜索深度。
  • 错误已解决。这是由于印地语字符。添加了异常处理程序。仅在第二次运行时才会填充结果的问题仍然存在。
  • 另一个问题是文件以只读模式打开。这是为什么?我很抱歉提出愚蠢的问题。这是我第一次用 Python 编码。
  • 第二次填充结果的问题也已修复。不得不添加缓冲选项。但是,只读模式的问题依然存在。
  • 只读模式问题也解决了。再次添加 resultFile.close() 。很抱歉打扰各位了。昨天脑筋急转弯。一双新鲜的眼睛就成功了。

标签: python web web-scraping


【解决方案1】:

有一些关于如何摆脱它的技巧。但是最好使用python 3,错误会自行消失。

【讨论】:

    猜你喜欢
    • 2021-01-12
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2019-01-20
    • 2023-03-12
    相关资源
    最近更新 更多