【问题标题】:Django/Python encoding error while reading website阅读网站时出现 Django/Python 编码错误
【发布时间】:2012-12-24 05:03:23
【问题描述】:

我想在一个网站上阅读几页的内容,对于少数几个,我的代码可以正常工作,但对于其余部分则不行。出现奇怪的字符:Å,Ä...等等。

articles = ""
url = "http://www.someurl.com"
sock = urllib.urlopen(url)

content = sock.read()
sock.close()
soup = BeautifulSoup(content)

div = soup.find("div", class_="col-d")
ps = div.find_all("p")
for p in ps:
    print type(p.get_text())
    print type(p.get_text().encode('utf-8'))
    print p.get_text()

输出是:

<type 'unicode'><type 'str'>różni się znacząco. Dziś, zgodnie z danymi Lion’s House i Home Brokera, przeciętnego  zapłacić niespełna 2,1 tys. zł miesięcznie. Gdyby taką samą nieruchomość kupić na kredyt, to w pierwszym roku część ods

您知道任何解决方案可以实现这项工作吗?

【问题讨论】:

  • 拨打print(sock.headers['content-type'])会得到什么?
  • @Jason Sperske: text/html; charset=utf-8
  • 使用 Requests library 这似乎有效:print requests.get("http://pl.bab.la/slownik/polski-niemiecki/zgodnie-z").text 也许您的 URL 错误地报告了它的字符编码
  • stackoverflow.com/questions/7219361/… 这似乎是信息冲突的问题
  • 成功了,非常感谢:)

标签: python encoding beautifulsoup decoding


【解决方案1】:

这是一种使用 Requests 库(和一个随机的波兰网站)的方法。

import requests
from bs4 import BeautifulSoup

r = requests.get("http://pl.bab.la/slownik/polski-niemiecki/zgodnie-z")

soup = BeautifulSoup(r.text, fromEncoding="UTF-8")
soup.find(id="showMoreCSDiv").text

此代码查找此 HTML:

<div id="showMoreCSDiv"><a class="btn" id="showMoreCS" href="javascript:babGetMoreCS(20,'zgodnie z');">więcej</a></div>

它返回这个:

więcej

【讨论】:

    猜你喜欢
    • 2018-03-11
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2011-06-19
    相关资源
    最近更新 更多