我正在尝试从网站上阅读html内容到Python来分析那里的文本,并决定它们属于哪个类别。我有一个长短划线的问题,因为当我尝试使用它们时它们会进入NoneType。我尝试过在这个网站上提出的几个修复程序,但没有一个有效。
from bs4 import BeautifulSoup
import re
import urllib.request
response = urllib.request.urlopen('website-im-opening')
content = response.read().decode('utf-8')
#this does not work
content = content.translate({0x2014: None})
content = re.sub(u'\u2014','',content)
#This is other part of code
htmlcontent = BeautifulSoup(content,"html.parser")
for cont in htmlcontent.select('p'):
if cont.has_attr('class') == False:
print(cont.strip()) #Returns an error as text contains long dash
任何想法如何从字符串中过滤掉长短划线才能使用其他文本?我可以用短划线替换它或完全移除,它们对我来说并不重要。
谢谢!
答案 0 :(得分:1)
你应该在使用bs4解压缩之后清理数据:
```
response = urllib.request.urlopen('website-im-opening')
content = response.read()
htmlcontent = BeautifulSoup(content,"html.parser")
for cont in htmlcontent.find_all('p', class_=False):
print(p.text)
```
答案 1 :(得分:0)
这样的事情会为你做这个工作吗?
# will only work if dashes are at either end
>>> a = '—asasas—'
>>> a.strip('\xe2\x80\x94')
'asasas'
它只是删除了长短划线 可以改为使用:
# can replace '[long-dash]' with '' to remove instead
>>> a = '—asasas—'
>>> a.replace('\xe2\x80\x94', '[long-dash]')
'[long-dash]asasas[long-dash]'
如果你想知道它们在哪里,那么会发生什么?