无法在 Atag 中获取字符串

Posted

技术标签:

【中文标题】无法在 Atag 中获取字符串【英文标题】:Can't get string inside ATag 【发布时间】:2020-06-16 14:40:42 【问题描述】:

我是初学者,所以请善待。我正在使用 Beautiful Soup 来解析一些 html。我已经到了找到这个标签的地方

a_tag = <a href="sicc2020/results?pid=31022">S<span class="notCompact">hakira</span> Mirfin</a>

我想从这个字符串中得到“S”、“hakira”和“Mirfin”。但是,当我使用 .string 函数时,它只是说没有。我可以得到“hakira”部分,但我不能得到“S”或“Mirfin”。

print(a_tag)
>><a href="sicc2020/results?pid=31022">S<span class="notCompact">hakira</span> Mirfin</a>

print(a_tag).string
>> None

print(a_tag).find('span').string
>>hakira

任何帮助将不胜感激!

谢谢。

【问题讨论】:

【参考方案1】:

你可以试试:

from bs4 import BeautifulSoup
html_doc="""<a href="sicc2020/results?pid=31022">S<span class="notCompact">hakira</span> Mirfin</a>"""

soup = BeautifulSoup(html_doc, 'lxml')
text = soup.find("a").get_text(",", strip=True)

print(text)

输出将是:

S,hakira,Mirfin

【讨论】:

谢谢! get_text 工作!没有意识到那和.string之间有区别。再次感谢您!【参考方案2】:

就这样做吧:

var text_array;
var children = document.getElementById(id).childNodes;

text_array.push(document.getElementById(id).textContent)

  for (var i = 0; i < children.length; i++) 
    text_array.push(children[i].textContent)
  

如果你想删除所有内容:

var children = document.getElementById(id).childNodes;

document.getElementById(id).textContent = ""

  for (var i = 0; i < children.length; i++) 
    children[i].textContent = ""
  

如果它不适用于您的“S”和“Mirfin”,您可以这样做:

$("#id")
.clone()    //clone the element
.children() //select all the children
.remove()   //remove all the children
.end()  //again go back to selected element
.text();

【讨论】:

【参考方案3】:

另一种方法。

from simplified_scrapy import SimplifiedDoc,req,utils
html ='''<a href="sicc2020/results?pid=31022">S<span class="notCompact">hakira</span> Mirfin</a>'''
doc = SimplifiedDoc(html)
print (doc.a.text)

结果:

Shakira Mirfin

这里有更多示例:https://github.com/yiyedata/simplified-scrapy-demo/tree/master/doc_examples

【讨论】:

以上是关于无法在 Atag 中获取字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何匹配包含某个字符串的属性?

WCAG 2.0 和 ATAG 一起

水平滚动atag that is an auto flex-item (or in one) [duplicate]

找不到带有 document.querySelector 的 atag 链接

atag信息处理

为啥我无法在猫鼬查询中获取字符串的值?