2016-07-24 4 views
1

мой HTML имеет несколько таблиц, то первая таблица:питон BeautifulSoap стол выскабливание

<table> 
    <tr> 
     <td> 
      <div id="string"> 
      </div> 
     </td> 
    </tr> 
</table> 

, а остальные имеют вид:

<table class="confluenceTable" data-csvtable="1"> 
     <tbody> 
      <tr> 
      <th class="highlight-grey confluenceTh" data-highlight-colour="grey" rowspan="2" style="text-align: center;">Negev</th> 

Я хочу, чтобы очистить данные из таблиц. когда я использую:

from bs4 import BeautifulSoup 
from urllib.request import urlopen 

url = 'XXX' 
soup = BeautifulSoup(urlopen(url).read(), "lxml") 
for table in soup.findAll('table'): 
    print(table) 

он находит только первую таблицу. когда я сменил поиск на:

soup.findAll("table", { "class" : "confluenceTable" }) 

ничего не найдено. Что мне не хватает?

с помощью питона 3.4 на окнах с BeautifulSoap 4,5

ответ

2

Я подозреваю, что вы пытаетесь скрести в Atlassian страницу Слияние, которая, как правило, весьма динамичным и делает использование JavaScript интенсивно, чтобы загрузить страницу. Если вы посмотрите на исходный код HTML, который вы загрузили с urllib, вы не найдете table элементов с confluenceTable класса.

Вместо этого вы должны либо изучить Confluence API, либо воспользоваться инструментом автоматизации браузера, например selenium.

+0

Это действительно страница слияния, я рассмотрю варианты, которые вы упомянули. Спасибо – susdu

+0

Поздравляем с 200k :) –

+1

@PadraicCunningham благодарит, конечно, закрытие вкладки SO сейчас и больше не отвечает! – alecxe

Смежные вопросы