У меня есть ссылка на веб-страницу, которая состоит из нескольких данных, которые нужно очистить, но эти данные имеют другой идентификатор и значительно длиннее - PullRequest
0 голосов
/ 06 мая 2018

Как мне очистить эти данные, поскольку они отличаются друг от друга?

<span id ='DataListTicker_lblTicker_0'>Wheat</span>
<span id ='DataListTicker_lblTicker_1'>Rice</span>
<span id ='DataListTicker_lblTicker_2'>Barleyt</span>
<span id ='DataListTicker_lblTicker_3'>Milk</span>
.
.
.

<span id ='DataListTicker_lblTicker_n'>XYZ</span>

Мне нужны все эти данные одновременно. Помогите мне, предпочтительным языком является python.

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Попробуйте следующий подход. Идентификаторы разные, но между ними много общего. Вот как вы можете извлечь из них данные:

from bs4 import BeautifulSoup

element = """
<span id ='DataListTicker_lblTicker_0'>Wheat</span>
<span id ='DataListTicker_lblTicker_1'>Rice</span>
<span id ='DataListTicker_lblTicker_2'>Barleyt</span>
<span id ='DataListTicker_lblTicker_3'>Milk</span>
<span id ='DataListTicker_lblTicker_n'>XYZ</span>
"""
soup = BeautifulSoup(element,"lxml")
for items in soup.select("[id^='DataListTicker_lblTicker_']"):
    print(items.text)

Выход:

Wheat
Rice
Barleyt
Milk
XYZ
0 голосов
/ 06 мая 2018

Вы можете сделать это, используя HTMLParser и регулярное выражение

Дайте это попробовать.

from html.parser import HTMLParser
import re

html_to_parse = """<span id ='DataListTicker_lblTicker_0'>Wheat</span>
<span id ='DataListTicker_lblTicker_1'>Rice</span>
<span id ='DataListTicker_lblTicker_2'>Barleyt</span>
<span id ='DataListTicker_lblTicker_3'>Milk</span>
<span id ='DataListTicker_lblTicker_n'>XYZ</span>"""

class MyHTMLParser(HTMLParser):
    def __init__(self):
        super().__init__()
        self.handle_next = False

    def handle_starttag(self, tag, attrs):
        if re.search('^DataListTicker_lblTicker_[0-9]*$', dict(attrs).get("id","")):
            self.handle_next = True

    def handle_data(self, data):
        if self.handle_next :
            print(data)
            self.handle_next = False

ps = MyHTMLParser()
ps.feed(html_to_parse)

Вероятно, есть гораздо более элегантный способ сделать это, но это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...