Python (Selenium / BeautifulSoup) Результат поиска Динамический URL - PullRequest
0 голосов
/ 22 ноября 2018

Отказ от ответственности: Это мой первый набег в поиске в Интернете

У меня есть список URL-адресов, соответствующих результатам поиска, например,

http://www.vinelink.com/vinelink/servlet/SubjectSearch?siteID=34003&agency=33&offenderID=2662

Я пытаюсь использовать Selenium для доступа к HTML-результату следующим образом:

for url in detail_urls:
    driver.get(url)
    html = driver.page_source
    soup = BeautifulSoup(html, 'html.parser')
    print(soup.prettify())

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

  1. http://www.vinelink.com/vinelink/servlet/SubjectSearch?siteID=34003&agency=33&offenderID=2662

  2. https://www.vinelink.com/#/searchResults/id/offender/34003/33/2662

  3. https://www.vinelink.com/#/searchResults/1

У кого-нибудь есть совет, как получить доступ к окончательным данным результатов поиска?

Обновление: После дальнейшегоПохоже, это связано с выполнением сценариев для извлечения релевантных данных для отображения ... существует множество сценариев, связанных с результатами поиска, на которые ссылается page_source;Есть ли способ определить, что имеет отношение к делу?

Я могу проверить информацию, необходимую для этого изображения:

enter image description here

1 Ответ

0 голосов
/ 23 ноября 2018

Получив переменную soup с HTML, следуйте приведенному ниже коду.

import json
data = soup.find('search-result')['data']
print(data)

Вывод: теперь обрабатывайте каждое значение как диктовку.

{"offender_sid":154070373,"siteId":34003,"siteDesc":"NC_STATE","first_name":"WESLEY","last_name":"ADAMS","middle_initial":"CHURCHILL","alias_first_name":null,"alias_last_name":null,"alias_middle_initial":null,"oid":"2662","date_of_birth":"1965-11-21","agencyDesc":"Durham County Detention Center","age":53,"race":2,"raceDesc":"African American","gender":null,"genderDesc":null,"status_detail":"Durham County Detention Center","agency":33,"custody_status_cd":1,"custody_detail_cd":33,"custody_status_description":"In Custody","aliasFlag":false,"registerValid":true,"detailAgLink":false,"linkedCases":false,"registerMessage":"","juvenile_flg":0,"vineLinkInd":1,"vineLinkAgAccessCd":2,"links":[{"rel":"agency","href":"//www.vinelink.com/VineAppWebService/api/site/agency/34003/33"},{"rel":"self","href":"//www.vinelink.com/VineAppWebService/api/offender/?offSid=154070373&lang=en_US"}],"actions":[{"name":"register","template":"//www.vinelink.com/VineAppWebService/api/register/{json data}","method":"POST"}]}

Далее:

info = json.loads(data)

print(info['first_name'], info['last_name'])

#This prints the first and last name but you can get others, just get the key like 'date_of_birth' or 'siteId'. You can also assign them to variables.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...