Невозможно получить строку внутри ATag - PullRequest
2 голосов
/ 16 июня 2020

Я новичок, так что будьте добры. Я использую Beautiful Soup для анализа некоторых html. Я дошел до того места, где нашел этот тег

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

Я хотел бы получить из этой строки «S», «hakira» и «Mirfin». Однако когда я использую функцию .string, она просто ничего не говорит. Я могу получить часть «хакира», но не могу получить «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

Любая помощь будет очень признательна!

Спасибо.

Ответы [ 3 ]

1 голос
/ 16 июня 2020

Вы можете попробовать:

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
0 голосов
/ 17 июня 2020

Другой метод.

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

0 голосов
/ 16 июня 2020

Просто сделайте это:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...