Это полное редактирование вопроса, потому что я, должно быть, неправильно задал свой вопрос на основе ответов, поэтому я постараюсь быть более ясным.Получение внутреннего HTML - Selenium, BeautifulSoup, Python
У меня есть объект, который я пытаюсь очистить. В моем коде, используемом на моем ноутбуке, у меня нет проблем с тем, чтобы это работало. Когда я перешел на Pythonanywhere, я больше не мог получить информацию, которую я ищу.
код, который работает на моей системе:
from urllib.request import urlopen
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import csv
import time
import re
#68 lines of code for another section of the site above this working well on my system and on pythonanywhere.
pageSource = driver.page_source
bsObj = BeautifulSoup(pageSource)
try:
parcel_number = bsObj.find(id="mParcelnumbersitusaddress_mParcelNumber")
s_parcel_number =parcel_number.get_text()
except AttributeError as e:
s_parcel_number = "Parcel Number not found"
# same kind of code (all working) that gets 10 more pieces of data
# Tax Year
try:
pause = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, "TaxesBalancePaymentCalculator")))
taxes_owed_2015_yr = bsObj.findAll(id="mGrid_RealDataGrid")[1].findAll('tr')[1].findAll('td')[0]
except IndexError as e:
s_taxes_owed_2015_yr = "No taxes due"
Этот код прекрасно работает на моем ноутбуке с fireforx - на Pythonanywhere, если я напечатать исходный текст для этой страницы я пытаюсь скрести я получаю следующее где мой стол должен быть:
<table border="0" cellpadding="5" cellspacing="0" class="WithBorder" width="100%">
<tbody><tr>
<td id="TaxesBalancePaymentCalculator"><!--DONT_PRINT_START-->
<span class="InputFieldTitle" id="mTabGroup_Taxes_mTaxChargesBalancePaymentInjected_mReportProcessingNote">Please wait while your current taxes are calculated.</span><img src="images/progress.gif"/> <!--DONT_PRINT_FINISH--></td>
</tr> <!--DONT_PRINT_START-->
<script type="text/javascript">
function TaxesBalancePaymentCalculator_ScriptLoaded(pPageContent)
{
element('TaxesBalancePaymentCalculator').innerHTML = pPageContent;
}
function results_ready()
{
element('pay_button_area').style.display = 'block';
element('pay_button_area2').style.display = 'block';
element('pay_additional_things_area').style.display = 'block';
}
var no_taxes_calculator = '&nbsp;<' + 'span class="MessageTitle">The tax balance calculator is not availab
le.<' + '/span>';
function no_taxes_calculator_available()
{
element('TaxesBalancePaymentCalculator').innerHTML = no_taxes_calculator;
}
function invalid()
{
element('TaxesBalancePaymentCalculator').innerHTML = no_taxes_calculator;
}
loadScript('injected/TaxesBalancePaymentCalculator.aspx?parcel_number=15-720-01-01-00-0-00-000');
</script><script id="injected_taxesbalancepaymentcalculator_ScriptTag" type="text/javascript"></script>
<tr id="pay_button_area" style="DISPLAY: none">
<td id="pay_button_area2">
<table border="0" cellpadding="2" cellspacing="0">
<tbody><tr>
Я играл вокруг и обнаружили, что, если я получаю innerHTML (как ул):
element('TaxesBalancePaymentCalculator').innerHTML = pPageContent;
что раздел содержит мои данные - проблема, я не могу преформы FindAll на веревочке, и мне нужно определенные строки из таблицы:
taxes_owed_2015_yr = bsObj.findAll(id="mGrid_RealDataGrid")[1].findAll('tr')[1].findAll('td')[0]
мне нужна помощь о том, как получить этот элемент как объект (а не string), чтобы я мог использовать его в своих данных. Я пробовал так много вещей, что я не мог перечислить их всех здесь. Я действительно мог бы помочь.
Заранее спасибо.
Я не помню никаких методов 'findAll' в' Python'. Это метод 'bs4' ... Импортируйте' bs4' в свой код? Что вы пытаетесь сделать с 'bsObj'? – Andersson
Да, это метод bs4, и я импортировал bs4 --- пару сотен строк выше. Я пытаюсь получить информацию из таблицы, которая находится во внутреннем HTML - – Raymond
Согласно документам, driver.get_attribute возвращает строку, следовательно, ошибку. – Steve