Сканирование в Интернете с использованием BS4, возвращающего некорректный html контент - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь найти статистику, касающуюся GPA, GRE и опыта работы студентов, поступивших в тот или иной университет, путем сбора данных из Yocket. Хотя мой код работает правильно для первой страницы (https://yocket.in/applications-admits-rejects/588-new-york-university/2), но когда я пытаюсь сканировать более поздние страницы, когда вы нажимаете на панель навигации ниже (https://yocket.in/applications-admits-rejects/588-new-york-university/2?page=2) Код не работал. При анализе я обнаружил, что содержимое HTML, полученное для более поздних страниц, становится неправильным, т.е. полученное содержимое html соответствует какой-то другой странице. Кроме того, полученный контент является неправильным для страницы = 3, страницы = 4 и так далее. Просматриваемый контент корректен только для страницы = 1.Этот URL предназначен для NYU, однако такое поведение при получении неверного контента на странице = 2 такое же, как и для всех URL других университетов. Однако я хочу, чтобы статус был только для пропусков. Итак, нужно найти способ навигации по различным страницам на странице 2. URL-адрес будет / 2? Page = section.

Вот мой код:

import requests
from bs4 import BeautifulSoup
page_num=2
url="https://yocket.in/applications-admits-rejects/588-new-york-university/2?page=" + str(page_num) 
page = requests.get(url)
soup=BeautifulSoup(page.content)
print(soup.prettify())

1 Ответ

0 голосов
/ 16 апреля 2020

Он выдает предупреждение, потому что синтаксический анализатор явно не определен, просто передайте features = "l xml" в конструктор BeautifulSoup, и это решит проблему.

import requests
from bs4 import BeautifulSoup
page_num=2
url="https://yocket.in/applications-admits-rejects/588-new-york-university/2?page=" + str(page_num) 
page = requests.get(url)
soup=BeautifulSoup(page.content,features = "lxml")
print(soup.prettify())

Hope это помогает!

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