Python BeautifulSoup возвращает другую веб-страницу, чем та, которую я вижу - PullRequest
2 голосов
/ 15 марта 2019

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

url=https://infoweb.newsbank.com/apps/news/results?sort=YMD_date%3AD&p=AWNB&t=&maxresults=20&f=advanced&b=results&val-base-0=January%201%2C%202005&fld-base-0=YMD_date&bln-base-1=and&val-base-1=drone%2C%20unmanned%20aerial%20vehicle%2C%20UAV&fld-base-1=alltext
page = requests.get(url, allow_redirects=True)
allcont = BeautifulSoup(page.text, 'html.parser')
allcont.find_all('div',class_="search-hits__meta--total_hits")

Когда я вставляю URL в браузер, меня перенаправляют на страницу с результатами поиска за 1 января 2005 года по ключевым словам "дрон" на сайте AccessWorldNews.Элемент, который меня интересует, это количество возвращаемых результатов - в данном случае это 2, которое может быть выделено с помощью `'div', class _ =" search-hit__meta - total_hits "'.

Однако веб-контент, который нашел меня Beautifulsoup, полностью отличается от того, что я вижу в браузере.Глядя на текст, кажется, что это промежуточная веб-страница, на которой пользователи вводят имя пользователя и пароль, но забавно то, что мне кажется, что мне никогда не приходилось вводить какие-либо имя пользователя и пароль для доступа к указанному выше URL.

Мне бы очень хотелось узнать, как я могу сказать BeautifulSoup, чтобы перейти на страницу, которая совпадает с той, которую я вижу, когда помещаю URL в браузер.Любая помощь высоко ценится!

1 Ответ

1 голос
/ 15 марта 2019

По указанному вами URL-адресу загружается страница входа пользователя для любого внешнего посетителя.Таким образом, BeautifulSoup (BS) также получит HTML для этой страницы.Чтобы получить результаты поиска, которые вы найдете после входа в систему, вам необходимо сначала войти на страницу, а затем использовать парсер BS на этой странице.Но BS не поддерживает логины.Вместо этого используйте selenium для автоматизации браузера, выполните вход в систему с помощью selenium, а также получите html-страницу зарегистрированной страницы.Обратитесь к get_attribute () в селене.

...