Я новичок в веб-парсинге с использованием Python. Я успешно научился собирать информацию с некоторых веб-сайтов, например, https://www.jameda.de и википедия. Но я наткнулся на веб-сайт, который не открывает новую ссылку при поиске определенных данных. Я не понимаю, как очистить этот сайт. Любая помощь горячо приветствуется.
Интернет сайт: https://www.kvwl.de/earzt/index.htm
В полях поиска вы можете ввести, например, «Берлин, Германия» в поле (Ihr Standort) и посмотреть веб-адрес, он не меняется. Также я посмотрел в поле проверки, я не вижу ссылки для очистки данных.
Любая помощь очень ценится !!
Ниже приведен код, который я использовал для извлечения информации с другого веб-сайта:
import requests
from bs4 import BeautifulSoup, NavigableString, Tag
import urllib.request
import re
base_site = "https://www.tk-aerztefuehrer.de/TK/Suche_SN/index.js?a=DL&Otn1=798&Ic1=127&Ftg=33014+Bad+Driburg&Ftg_e=&Lng=36"
response = requests.get(base_site)
response.status_code
html = response.content
html
soup = BeautifulSoup(html, 'lxml')
with open('TK_33014_Bad_Driburg_LXML.html','wb') as file:
file.write(soup.prettify('utf-8'))
divs = soup.find_all("div",{"class": "card dl"})
headings = [div.find('a').text for div in divs]
headings
1 ответ
Этот сайт использует JavaScript для поиска, а BeautifulSoup анализирует только HTML.
Вот две вещи, которые вы можете сделать, чтобы очистить страницу следующим образом:
используйте что-то, что управляет безголовым браузером (без графического интерфейса), который фактически выполняет Javascript. Затем вы можете имитировать ввод текста в текстовые поля и нажатие кнопок.
selenium
- вариант для этого, как указано в комментариях. Исходя из большей части опыта JavaScript, я предпочитаюpuppeteer
, который, похоже, также имеет порт Python < / a> (хотя еще не пробовал с Python) илиplaywright
.реконструировать запросы страницы: если вы откроете инструменты разработчика Chrome на вкладке сети на странице, которую вы связали, выполните поиск чего-нибудь и выберите вкладку «XHR» (для HTTP-запросов XML, выполняемых с помощью JavaScript), как показано на снимке экрана, вы увидите запрашиваемая страница, а также параметры. Вы даже можете щелкнуть его правой кнопкой мыши и скопировать запрос как
curl
,fetch
и многие другие.
Вот запрос в виде извлечения JavaScript:
fetch("https://www.kvwl.de/DocSearchService/DocSearchService/searchDocs", {
"headers": {
"accept": "application/json, text/javascript, */*; q=0.01",
"accept-language": "en-US,en;q=0.9",
"content-type": "application/json; charset=UTF-8",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin"
},
"referrer": "https://www.kvwl.de/earzt/index.htm",
"referrerPolicy": "same-origin",
"body": "{\"Latitude\":52.52000659999999,\"Longitude\":13.404954,\"DocGender\":\"\",\"DocNamePattern\":\"\",\"ExpertiseAreaStructureId\":\"\",\"ApplicableQualificationId\":\"\",\"SpecialServiceId\":\"\",\"LanguageId\":\"\",\"BarrierFreeAttributeFilter\":{\"ids\":[]},\"PageId\":0,\"PageSize\":20}",
"method": "POST",
"mode": "cors",
"credentials": "omit"
});
Затем вы можете запросить этот URL-адрес прямо в своем скрипте, передать необходимые переменные в тело, и вы должны получить ответ JSON с ответом.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.