Python类型错误:编码和替换时?有“空间”

2024-06-16 10:32:17 发布

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

这是一个函数,我在这个函数中尝试使用beauthoulsouppython库从<li>标记获取文章,并对其进行编码、替换(“?”," "). 在

def getDoxyDonkeyText(testUrl):
 request = urllib.request.urlopen(testUrl)
 soup = BeautifulSoup(request)
 mydivs = soup.findAll("div", {"class":'post-body'})
 posts =[]
 for div in mydivs:
     posts+=map(lambda p:p.text.encode('ascii', errors='replace').replace("?"," "), div.findAll("li"))
 return posts

______________________

articleURL = "http://doxydonkey.blogspot.in"
doxyDonkeyPosts = []
doxyDonkeyPosts=getDoxyDonkeyText(articleURL)
_______________________

这是我得到的错误。在

^{2}$

我们将非常感谢错误的原因和解决方法。 提前谢谢。在


Tags: 函数indivrequest错误lireplaceposts
1条回答
网友
1楼 · 发布于 2024-06-16 10:32:17

str.encode()将返回类似字节的对象,用str替换将给您一个错误。您需要提供字节替换。比如(b'"?", b" ")

这是简化版。在

import urllib
from bs4 import BeautifulSoup

def getDoxyDonkeyText(testUrl):
    request = urllib.request.urlopen(testUrl)
    soup = BeautifulSoup(request, 'html.parser')
    mydivs = soup.findAll("div", {"class":'post-body'})
    posts =[]
    for div in mydivs:
        for li in div.find_all("li"):
            posts.append(
                li.text.encode('ascii', errors='replace').replace(b"?", b" ")
            )
            # if you want string
            posts.append(
                li.text.encode('ascii', errors='replace').decode().replace("?", " ")
            )
    return posts


articleURL = "http://doxydonkey.blogspot.in"
doxyDonkeyPosts=getDoxyDonkeyText(articleURL)
print(doxyDonkeyPosts)

相关问题 更多 >