2016-02-03 4 views
0

Я пытаюсь очистить данные со стола на веб-странице, используя Python, BeautifulSoup, Requests, а также Selenium для входа на сайт. Вот таблица я ищу, чтобы получить данные для ...Невозможно очистить таблицу HTML с помощью BeautifulSoup

<div class="sastrupp-class"> 
 
     <table> 
 
      <tbody> 
 
       <tr> 
 
        <td class="key">Thing I dont want 1</td> 
 
        <td class="value money">$1.23</td> 
 

 
        <td class="key">Thing I dont want 2</td> 
 
        <td class="value">99,999,999</td> 
 

 
        <td class="key">Target</td> 
 
        <td class="money value">$1.23</td> 
 

 
        <td class="key">Thing I dont want 3</td> 
 
        <td class="money value">$1.23</td> 
 

 
        <td class="key">Thing I dont want 4</td> 
 
        <td class="value percentage">1.23%</td> 
 

 
        <td class="key">Thing I dont want 5</td> 
 
        <td class="money value">$1.23</td> 
 
       </tr> 
 
      </tbody> 
 
     </table> 
 
    </div>
я могу найти «sastrupp-класс» прекрасный, но я не знаю, как смотреть через него и добраться до часть таблицы, которую я хочу. я полагал, что я мог бы просто посмотреть на класс, который Я ищу, как это ...

output = soup.find('td', {'class':'key'}) 
    print(output) 

но ничего не возвращает.

Важно отметить:

  1. < тд> s в таблице имеют такое же имя класса, как тот, который я хочу. Если я не смогу их разделить, я в порядке, хотя я бы предпочел просто вернуть тот, который мне нужен.

2.Нет других < div> s с классом = "sastrupp-class" на сайте.

  1. Я, очевидно, начинающий, поэтому дайте мне знать, помогаю ли я вам помочь. Любая помощь/указатели будут оценены.
+0

Он отлично работает на моем компьютере, это фактический код? Если вы пытаетесь получить конкретную базовую базу элемента на нем, вы можете сначала «find_all», а затем фильтровать другой элемент по их содержимому. –

+0

https://www.itextpad.com/wFsEvS7eDb вот что я попробовал –

+2

Возможно, эта часть таблицы генерируется javascript, поэтому запросы не могут ее получить. dowload в HTML-файл и открыть его в редакторе, чтобы проверить HTML-теги. – furas

ответ

-1

1) Во-первых, чтобы получить 'Target' вам нужно find_all, а не найти. Тогда, учитывая, что вы точно знаете, в каком положении ваша цель будет (в данном примере вы дали это индекс = 2) решение может быть достигнуто следующим образом:

from bs4 import BeautifulSoup 

html = """(YOUR HTML)""" 

soup = BeautifulSoup(html, 'html.parser') 
table = soup.find('div', {'class': 'sastrupp-class'}) 
all_keys = table.find_all('td', {'class': 'key'}) 
my_key = all_keys[2] 

print my_key.text # prints 'Target' 

2)

Есть другие < DIV> s с классом = «sastrupp-класса» на сайте

Опять же, вам нужно выбрать тот, который вам нужно, используя find_all, а затем выберите правильный индекс.

Пример HTML:

<body> 
<div class="sastrupp-class"> Don't need this</div> 
<div class="sastrupp-class"> Don't need this</div> 
<div class="sastrupp-class"> Don't need this</div> 
<div class="sastrupp-class"> Target</div> 
</body> 

Для извлечения цели, вы можете просто:

all_divs = soup.find_all('div', {'class':'sastrupp-class'}) 
target = all_divs[3] # assuming you know exactly which index to look for