如何使用pythonversion3x从网站读取html正文

2024-04-19 14:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想连接并接收来自特定网站链接的http响应。 我有很多Python代码:

import urllib.request
import os,sys,re,datetime

fp = urllib.request.urlopen("http://www.python.org")
mybytes = fp.read()

mystr = mybytes.decode(encoding=sys.stdout.encoding)
fp.close()

当我将响应作为参数传递给: BeautifulSoup(str(mystr), 'html.parser') 要获取已清理的html文本,我遇到以下错误:

return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u25bc' in position 1139: character maps to <undefined>.

问题是我怎样才能解决这个问题?你知道吗

完整代码:

import urllib.request
import os,sys,re,datetime
fp = urllib.request.urlopen("http://www.python.org")
mybytes = fp.read()

mystr = mybytes.decode(encoding=sys.stdout.encoding)
fp.close()


from bs4 import BeautifulSoup
soup = BeautifulSoup(str(mystr), 'html.parser')
mystr = soup;
print(mystr.get_text())

Tags: 代码importrehttpdatetimeosrequesthtml
2条回答

如果您使用requests库,您可以避免以下复杂情况:)

import requests
fp = requests.get("http://www.python.org")
mystr = fp.text

from bs4 import BeautifulSoup
soup = BeautifulSoup(mystr, 'html.parser')
mystr = soup;
print(mystr.get_text())

BeautifulSoup非常乐意使用urlopen返回的类似文件的对象:

from urllib.request import urlopen
from bs4 import BeautifulSoup

with urlopen("...") as website:
    soup = BeautifulSoup(website)

print(soup.prettify())

相关问题 更多 >