【发布时间】:2019-02-15 16:30:20
【问题描述】:
这是我的代码的要点。它试图从旧网站获取一些文本。这不是我的,所以我无法更改来源。
from bs4 import BeautifulSoup
import requests
response = requests.get("https://mattgemmell.com/network-link-conditioner-in-lion/")
data = response.text
soup = BeautifulSoup(data, 'lxml')
article = soup.find_all('article')[0]
text = article.find_all('p')[1].text
print(text)
给出这个:
'如果您是使用网络的 Mac 或 iOS 应用程序的开发人员,则在 Mac OS X 10.7 开发人员工具中的一项新功能 â\x80\x9cLionâ\x80\x9d(阅读我在《卫报》上对它的评论)对你很有用。这篇简短的文章描述了它的工作原理。'
我可以用它来转换像â\x80\x99这样的部分:
converted_text = bytes(text, 'latin-1').decode('utf-8')
确实有效。
但如果你得到文本的不同部分:
text = article.find_all('p')[8].text
给我:
'\n← 在 Lion 上查找文本中的模式\n在 OS X Lion 上使用空格 →\n'
使用bytes(text, 'latin-1') 给了我:
“latin-1”编解码器无法在位置 1 编码字符“\u2190”:序数不在范围内(256)
我猜是箭?我怎样才能让它自动忽略和丢弃所有非拉丁字符。
任何想法都会很有帮助!
【问题讨论】:
-
你为什么要编码成latin-1,然后用utf-8解码?
标签: python web-scraping beautifulsoup html-parsing