Использование requests.get() на странице, использующей сервлет

#web-scraping #servlets #beautifulsoup #python-requests

#очистка веб-страниц #сервлеты #beautifulsoup #python-запросы

Вопрос:

Я пытаюсь очистить данные с приведенной ниже веб-страницы, используя библиотеку запросов и BeautifulSoup на Python. К сожалению, похоже, что веб-сайт использует сервлет для извлечения данных, и я не совсем уверен, как с этим справиться.

Я пробовал оба запроса непосредственно со страницы результатов:

 http://a810-bisweb.nyc.gov/bisweb/PropertyProfileOverviewServlet?bin=1014398amp;go4= GO amp;requestid=0
html = requests.get(url)
soup = BeautifulSoup(html.text, 'html')
  

А также запросы со страницы поиска:

 url = 'http://a810-bisweb.nyc.gov/bisweb/bispi00.jsp'
html = requests.get(url, params={'bin':1014398})
soup = BeautifulSoup(html.text, 'html')

  

Оба заканчиваются истечением времени ожидания запроса, предположительно потому, что я неправильно форматирую свой запрос. Есть ли способ успешно захватить html со страницы результатов?

Ответ №1:

Попробуйте использовать selenium :

 from bs4 import BeautifulSoup
from selenium import webdriver
import time

url = 'http://a810-bisweb.nyc.gov/bisweb/PropertyProfileOverviewServlet?bin=1014398amp;go4= GO amp;requestid=0'
driver = webdriver.Chrome()
driver.get(url)

time.sleep(3)

soup = BeautifulSoup(driver.page_source, 'html5lib')

driver.close()