我正在制作一个程序,在这个程序中,我正在删除一个网页,内容被隐藏在原始页面上,并使用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>单击链接“查看联系人详细信息”后,将显示所有隐藏的内容。你能帮我解决这个问题吗?
发布于 2018-07-30 10:31:18
当页面加载时,联系人详细信息不在网页上。在点击“查看联系人详细信息”时,网页会发出一个新的请求来获取联系人详细信息。
为了找出联系人详细信息是从哪个url获取的,您可以打开firefox或chrome,并使用右键单击> In元素打开调试器(或者只按f12)。然后转到网络选项卡。点击“查看联系人详细信息”,看看它提出了什么请求。我已经检查过它,它获取的详细信息来自于"https://www.naukri.com/jd/contactDetails?file=250718003152“。您可以从原始的url“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”中获得文件id,它是250718003152。
因此,您所要做的就是使用urllib或任何您正在使用的工具向url "https://www.naukri.com/jd/contactDetails?file=250718003152“发出一个新的get请求。将在json中作出回应。您必须解析json并提取所需的字段。
发布于 2018-07-30 10:31:17
隐藏的内容实际上是通过单独的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": "himani.adhikari@cloudanalogy.com , malika.pathak@cloudanalogy.com",
"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"
}
}换句话说,您所要做的就是使用主URL中已有的ID (本例中为250718003152)对上面的URL发出单独的GET请求,并解析返回的JSON对象。
https://stackoverflow.com/questions/51591849
复制相似问题