Очистка содержимого javascript: void (0) с использованием python

Я делаю программу, в которой я удаляю веб-страницу, а содержимое скрывается с исходной страницы и использую для отображения себя с помощью 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>

После нажатия на ссылку "просмотреть сведения о контакте" будет показан весь скрытый контент. Не могли бы вы помочь мне решить эту проблему?

Единственный способ сделать это - выполнить Javascript, который обрабатывает событие щелчка - вы не сделаете это с помощью обычного запроса GET.

Reinstate Monica Cellio 30.07.2018 12:28

тогда как я могу это сделать?

VIKAS RATHEE 30.07.2018 12:30

Используйте Selenium selenium-python.readthedocs.io

ScottMcC 30.07.2018 12:31

на самом деле, я не знаю, как использовать селен!

VIKAS RATHEE 30.07.2018 12:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
2 359
2

Ответы 2

Скрытый контент фактически извлекается с помощью отдельного вызова 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 и извлечь нужные поля.

Другие вопросы по теме