Я делаю программу, в которой я удаляю веб-страницу, а содержимое скрывается с исходной страницы и использую для отображения себя с помощью
herf = javascript:void(0)
ссылка и текст находятся в тегах <p>, а затем <span>.
Вот мой код:
import requests, re
from bs4 import BeautifulSoup
page = requests.get('https://www.naukri.com/job-listings-Python-Developer-
Cloud-Analogy-Softech-Pvt-Ltd-Noida-Sector-63-Noida-1-to-2-years-
250718003152?src=rcntSrchWithoutCount&sid=15327965116011&xp=1&px=1&qp=python%20developer&srcP%
20ge=s').text
soup = BeautifulSoup(page, 'html.parser')
link = soup.find('div', {'class':'jDisc
viewContact'}).find_all(re.compile('p|em|span'))
results = [i.text for i in link]
print(results)
и HTML-страница находится здесь:
<a href = "javascript:void(0)" class = "mt30 dspB f14 lH20"
id = "viewCont_trg">View Contact Details</a>
После нажатия на ссылку "просмотреть сведения о контакте" будет показан весь скрытый контент. Не могли бы вы помочь мне решить эту проблему?
тогда как я могу это сделать?
Используйте Selenium selenium-python.readthedocs.io
на самом деле, я не знаю, как использовать селен!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Скрытый контент фактически извлекается с помощью отдельного вызова AJAX:
https://www.naukri.com/jd/contactDetails?file=250718003152
который возвращает легко анализируемую строку JSON:
{
"hiddenFields": {
"file": "250718003152",
"showSendQuery": 1
},
"fields": {
"Recruiter Name": "Malika Pathak, Himani Adhikari",
"Contact Company": "Cloud Analogy Softech Pvt Ltd",
"Address": "H-77, H Block, Sector 63, Noida, UP-201307NOIDA,Uttar Pradesh,India 201307",
"Email Address": {
"title": "[email protected] , [email protected]",
"src": ""
},
"Website": "http://cloudanalogy.com/",
"Telephone": "9319155392"
},
"sendQueryForm": {
"formKey": "F53b54d385c47b",
"extensions": [
"doc",
"docx",
"pdf",
"rtf"
],
"max_file_size": "2097152",
"max_num_files": "1",
"fileKey": "Ue2777e04d3b690ecbc77607eb919c00",
"fileKeys": [
"Ue2777e04d3b690ecbc77607eb919c00"
],
"upload_url": "//files.naukri.com/0/saveFile.php",
"file_url": "//files.naukri.com/0/saveUrlFile.php",
"delete_url": "//files.naukri.com/0/deleteFile.php",
"html": " \u003Cform id=\"saQ_form\" name=\"sendQ\" action=\"https://my.naukri.com/mynaukri/sendquery.php/SendQuery/sendQuery\" method=\"post\" class=\"loginLay\"\u003E\u003Ch3 class=\"title\"\u003ESend a Query to Recruiter\u003C/h3\u003E\u003Cdiv class=\"row\"\u003E\u003Cdiv class=\"rowL\"\u003E\u003Clabel for=\"eLogin\"\u003EEnter Email ID\u003C/label\u003E\u003C/div\u003E\u003Cdiv class=\"rowR\"\u003E\u003Cinput id=\"saQEmail\" name=\"from\" rel=\"required:1005,custom:1001\" type=\"text\" name=\"from\" placeholder=\"Enter your active Email ID\"\u003E\u003Ci class=\"erLbl\" id=\"saQEmail_err\"\u003E\u003C/i\u003E\u003C/div\u003E\u003C/div\u003E\u003Cdiv class=\"row\"\u003E\u003Cdiv class=\"rowL\"\u003E\u003Clabel for=\"pLogin\"\u003EQuery\u003C/label\u003E\u003C/div\u003E\u003Cdiv class=\"rowR\"\u003E\u003Ctextarea placeholder=\"Query cannot exceed 500 characters\" id=\"saQ_query\" rel=\"required:1011\" minlength=\"6\" maxlength=\"500\" name=\"query\" onpaste=\"return false\" oncopy=\"return false\"\u003E\u003C/textarea\u003E\u003Ci class=\"erLbl\" id=\"saQ_query_err\"\u003E\u003C/i\u003E\u003C/div\u003E\u003C/div\u003E\u003Cdiv class=\"row upload\"\u003E\u003Cdiv class=\"rowL\"\u003E\u003Clabel for=\"eLogin\"\u003EAttach Resume \u003Cspan\u003E(optional)\u003C/span\u003E\u003C/label\u003E\u003C/div\u003E\u003Cdiv class=\"rowR\"\u003E\u003Cdiv id=\"hid_container\" style=\"display:none\"\u003E\u003C/div\u003E\u003Cdiv id=\"saQ_uploadCont\"\u003E\u003Cdiv id=\"saQ_basicProgressBar\" style=\"display:none\"\u003E\u003C/div\u003E\u003Cinput name=\"F53b54d385c47b[Ue2777e04d3b690ecbc77607eb919c00]\" id=\"saQ_upload\" type=\"file\"\u003E\u003Cul id=\"results\" class=\"outputCss\" style=\"display:none\"\u003E\u003C/ul\u003E\u003Cp class=\"supDocs\"\u003ESupported Formats: doc, docx, rtf, pdf Max file size: 2MB\u003C/p\u003E\u003C/div\u003E\u003Ci class=\"erLbl\" id=\"saQ_upload_err\"\u003E\u003C/i\u003E\u003Cp href=\"#\" class=\"chk\"\u003E\u003Cem\u003E\u003C/em\u003E\u003Cspan\u003ESend me jobs like this\u003C/span\u003E\u003C/p\u003E\u003Cp href=\"#\" class=\"chk\"\u003E\u003Cspan\u003EI have read and understood and agree to the \u003Ca target=\"_blank\" href=\"https://www.naukri.com/termsconditions#g1\"\u003E\"Terms and Conditions\"\u003C/a\u003E governing the use of naukri.com.\u003C/span\u003E\u003C/p\u003E\u003Cbutton type=\"submit\" id=\"saQBtn\" class=\"blueBtn\" name=\"sbt\"\u003ESubmit\u003C/button\u003E\u003C/div\u003E\u003C/div\u003E\u003Cinput type=\"hidden\" value=\"250718003152\" name=\"job_id\"/\u003E\u003Cinput type=\"hidden\" value=\"1\" name=\"isSMJLT\" id=\"isSMJLT\"/\u003E\u003Cinput type=\"hidden\" id=\"file_url\" name=\"file_url\"/\u003E\u003Cinput type=\"hidden\" id=\"file_name\" name=\"file_name\"/\u003E\u003C/form\u003E"
}
}
Другими словами, все, что вам нужно сделать, это сделать отдельный запрос GET для указанного выше URL-адреса, используя идентификатор, который у вас уже есть в основном URL-адресе (в данном случае 250718003152), и проанализировать возвращаемый объект JSON.
Контактные данные отсутствуют на веб-странице, когда страница загружена. При нажатии на просмотр сведений о контакте веб-страница делает новый запрос для получения контактных данных.
Чтобы узнать, по какому URL-адресу извлекаются контактные данные, вы можете открыть firefox или chrome и открыть отладчик, щелкнув правой кнопкой мыши> проверить элемент (или просто нажав f12). Затем перейдите на вкладку сети. Нажмите «просмотреть контактные данные» и посмотрите, какой запрос он делает. Я проверил его, и URL, по которому он извлекает подробности, - "https://www.naukri.com/jd/contactDetails?file=250718003152". Вы можете получить идентификатор файла 250718003152 из исходного URL-адреса "https://www.naukri.com/job-listings-Python-Developer-". Cloud-Analogy-Softech-Pvt-Ltd-Noida-Sector-63-Noida-1-2 года- 250718003152? Src = rcntSrchWithoutCount & sid = 15327965116011 & xp = 1 & px = 1 & qp = python% 20developer & srcP% 20ge = s ".
Итак, все, что вам нужно сделать, это сделать новый запрос на получение URL-адреса "https://www.naukri.com/jd/contactDetails?file=250718003152", используя urllib или что-то еще, что вы используете. Ответ будет в формате json. Вам нужно проанализировать json и извлечь нужные поля.
Единственный способ сделать это - выполнить Javascript, который обрабатывает событие щелчка - вы не сделаете это с помощью обычного запроса GET.