2017-02-18 2 views
1

Я пытаюсь очистить таблицу на http://apps2.eere.energy.gov/wind/windexchange/economics_tools.aspdryscrape и BeautifulSoup, чтобы получить все строки в JS оказанных IFRAME

enter image description here

таблицы по умолчанию показывает 5 записей. Я использую dryscrape и BeautifulSoup следующим образом:

import dryscrape 
from bs4 import BeautifulSoup 
myurl = 'http://apps2.eere.energy.gov/wind/windexchange/economics_tools.asp' 
session = dryscrape.Session() 
session.visit(myurl) 
response = session.body() 
soup = BeautifulSoup(response,'lxml') 
table = soup.find_all("td") 

Но это возвращает только по умолчанию 5 записей этой таблицы. Как я могу получить все строки в этой таблице?

спасибо!

ответ

1

Для данной конкретной страницы вам не нужна сухая щетка. Поскольку совокупность таблицы, которую вы пытаетесь получить в исходном коде HTML вы можете просто сделать:

from bs4 import BeautifulSoup 
import requests 

myurl = 'http://apps2.eere.energy.gov/wind/windexchange/economics_tools.asp' 
soup = BeautifulSoup(requests.get(myurl).text,'lxml') 
table = soup.find_all("td") 

В качестве альтернативы, с вашей текущей настройки:

table = session.xpath('//td') 

даст вам узлы тд теги на сеансе сушки. В этом случае вам не нужен красивый суп.

session.body() предоставляет вам html, который в настоящее время загружается в dom. Поскольку java-скрипт действует на это и меняет то, что находится в dom. Из-за этого вы можете сделать цикл for, где вы нажимаете на каждую следующую кнопку в сеансе, и после каждой итерации подавайте тело в прекрасный суп, но это кажется мне ненужным.

useful reference

+1

о мой, я не заметил, таблица находится в исходном коде HTML. Огромное спасибо!!! –