Как сканировать веб-страницу, используя селен - find_element_by_link_text - PullRequest
1 голос
/ 16 мая 2019

Я пытаюсь использовать Selenium и BeautifulSoup , чтобы "нажать" на javascript.void. Возвращение find_element_by_link_text не равно NULL . Однако, ничего не обновляется просмотром browser.page_source. Я не уверен, является ли сканирование успешным или нет

Вот результат использования

PageTable = soup.find('table',{'id':'rzrqjyzlTable'})
print(PageTable)
 <table class="tab1" id="rzrqjyzlTable">
 <div id="PageNav" class="PageNav" style="">
 <div class="Page" id="PageCont">
  <a href="javascript:void(0);" target="_self" class="nolink">Previous</a>3<span class="at">1</span>
  <a href="javascript:void(0);" target="_self" title="Page 2">2</a>
  <a href="javascript:void(0);" target="_self" title="Page 3">3</a>
  <a href="javascript:void(0);" target="_self" title="Page 4">4</a>
  <a href="javascript:void(0);" target="_self" title="Page 5">5</a>
  <a href="javascript:void(0);" target="_self" title="Next group" class="next">...</a>
  <a href="javascript:void(0);" target="_self" title="Last Page">45</a>
  <a href="javascript:void(0);" target="_self" title="Page 2">Next Page</a>
  <span class="txt">&nbsp;&nbsp;Jump</span><input class="txt" id="PageContgopage">
  <a class="btn_link">Go</a></div>
                        </div>

Код для нажатия следующей страницы показан ниже

try:       
    page = browser.find_element_by_link_text(u'Next Page')
    page.click()    
    browser.implicitly_wait(3)
  except NoSuchElementException:
    print("NoSuchElementException")

  soup = BeautifulSoup(browser.page_source, 'html.parser')
  PageTable = soup.find('table',{'id':'rzrqjyzlTable'})
  print(PageTable )

Я ожидаю, что browser.page_source должен быть обновлен

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Я предполагаю, что вы извлекаете источник до того, как страница (или подстраница) будет перезагружена.Я попытался бы нажать кнопку «Следующая страница», щелкнуть ее, подождать, пока она не устареет (указывает, что страница перезагружается), а затем попытаться извлечь источник.

page = browser.find_element_by_link_text(u'Next Page')
page.click()
wait.until(EC.staleness_of(page))
# the page should be loading/loaded at this point
# you may need to wait for a specific element to appear to ensure that it's loaded properly since it doesn't seem to be a full page load
0 голосов
/ 16 мая 2019

После нажатия на следующую страницу, вы можете перезагрузить веб-страницу.

Код:

driver.refresh()

Или с помощью исполнителя сценариев Java:

driver.execute_script("location.reload()")  

после этого вы пытаетесь получить исходный код страницы, какты делаешь.

Надеюсь, это поможет.

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