因此,我编写了一个最小的函数来从网页中抓取所有文本:
url = 'http://www.brainpickings.org'
request = requests.get(url)
soup_data = BeautifulSoup(request.content)
texts = soup_data.findAll(text=True)
def visible(element):
if element.parent.name in ['style', 'script', '[document]', 'head', 'title']:
return False
return True
print filter(visible,texts)
但是,它并没有那么顺利。那里仍然有不必要的标签。此外,如果我尝试对我不想要的各种字符进行 reg-ex 删除,我会得到一个
error elif re.match('<!--.*-->', str(element)):
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 209: ordinal not in range(128)
因此,我怎样才能更好地改进它以使其更好?