首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python抓取javascript:void(0)内容

使用python抓取javascript:void(0)内容
EN

Stack Overflow用户
提问于 2018-07-30 10:23:18
回答 2查看 3.4K关注 0票数 2

我正在制作一个程序,在这个程序中,我正在删除一个网页,内容被隐藏在原始页面上,并使用herf = javascript:void(0)链接来显示自己,文本在<p>中,然后是<span>标签。

这是我的代码:

代码语言:javascript
复制
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页面在这里:

代码语言:javascript
复制
<a href="javascript:void(0)" class="mt30 dspB f14 lH20"
id="viewCont_trg">View Contact Details</a>

单击链接“查看联系人详细信息”后,将显示所有隐藏的内容。你能帮我解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 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并提取所需的字段。

票数 2
EN

Stack Overflow用户

发布于 2018-07-30 10:31:17

隐藏的内容实际上是通过单独的AJAX调用获取的:

代码语言:javascript
复制
https://www.naukri.com/jd/contactDetails?file=250718003152

它返回易于解析的JSON字符串:

代码语言:javascript
复制
{
  "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对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51591849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档