Parse javascript сайт с Selenium и BeautifulSoup - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь немного почистить сайт моей местной библиотеки, в частности экран результатов поиска. Вот пример URL того, что я пытаюсь проанализировать: https://catalog.denverlibrary.org/search/searchresults.aspx?ctx=1.1033.0.0.6&type=Keyword&term=How%20Not%20to%20Die&by=TI&sort=RELEVANCE&limit=TOM=* & query = & page = 0 & searchid = 3

Насколько я могу судить, для сайта требуется javascript, и я не могу включить его в моих целях. Вот соответствующий код:

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Firefox()
driver.get('https://catalog.denverlibrary.org/search/searchresults.aspx?ctx=1.1033.0.0.6&type=Keyword&term=How%20Not%20to%20Die&by=TI&sort=RELEVANCE&limit=TOM=*&query=&page=0&searchid=1')
driver.implicitly_wait(1000)

soup = BeautifulSoup(driver.page_source,'html.parser')
print(soup)

Когда я просматриваю то, что было напечатано с Супа, я вижу текст

JavaScript отключен в вашем браузере. Пожалуйста, включите JavaScript, чтобы пользоваться всеми функциями этого сайта.

Мне кажется, что мне не хватает чего-то базового c для того, как включить Javascript, но я могу ' не могу найти это. Любая помощь?

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Оказывается, только поисковая часть страницы не закончила загрузку. Итак, я добавил эту строку кода, чтобы она заработала

WebDriverWait(broswer, 10).until(EC.presence_of_element_located( ( By.ID, "searchResultsDIV" ) ))

Нашел ее из ответа на этот вопрос .

0 голосов
/ 20 марта 2020

Вы можете включить JavaScript с опцией профиля для селена Firefox.

profile.set_preference("javascript.enabled", True)

Вот как это сделать.

profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", "Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0")
profile.set_preference("javascript.enabled", True)
broswer = webdriver.Firefox(profile)
broswer.get('https://catalog.denverlibrary.org/search/searchresults.aspx?ctx=1.1033.0.0.6&type=Keyword&term=How%20Not%20to%20Die&by=TI&sort=RELEVANCE&limit=TOM=*&query=&page=0&searchid=1')
driver.implicitly_wait(1000)

soup = BeautifulSoup(driver.page_source,'html.parser')
print(soup)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...