你发布的代码无法运行。而且,即使在我猜到如何修复它以运行之后,它实际上并没有做您所声称的事情。但我很肯定我知道错误在哪里。
此代码不返回空字符串,但返回
"
:
text = div.get_text().strip().split(" ", 1)[0].strip()
不是因为
strip
. 因为,与您所宣称的相反,此代码并不包含您首先需要的文本:
text = div.get_text().strip().split(" ", 1)[0]
但更确切地说
'"\n'
. 当然,剥线会给你一个空字符串。
如果打印出中间部分,您可以看到原因:
>>> div.get_text()
'\n "\n Text I want \n "\n \nEdit\n\n'
>>> div.get_text().strip()
'"\n Text I want \n "\n \nEdit'
>>> div.get_text().strip().split(" ", 1)
['"\n', ' Text I want \n "\n \nEdit']
>>> div.get_text().strip().split(" ", 1)[0]
'"\n'
>>> div.get_text().strip().split(" ", 1)[0].strip()
'"'
看起来就像你
事实上
想做的是找到前两个之间的文本
“
字符,然后拆分:
>>> div.get_text().strip().split('"', 2)[1].strip()
'Text I want'
但同时,我认为通过包含所有后代文本而不仅仅是直接的子文本,您使事情变得比需要的更复杂。如果我们没有
Edit
要处理的部分是,整件事只是你想要的文本,周围是一个复杂的空间、换行符和引号的混合体,我们可以一次性将它们全部去掉:
>>> div.contents[0]
'\n "\n Text I want \n "\n
>>> div.contents[0].strip(' \n"')
'Text I want'