精华内容
下载资源
问答
  • 例如,在网站目录下,有个图片,地址是: ~/images/pic1.jpg。...网站的网址是: http://www.123.com/mysite 想要得到的结果是: http://www.123.com/mysite/images/pic1.jpg 有什么好办法么?
  • 点击这个按钮,我这个responseText输出的网站源码,软件工程师都是乱码。 private void button1_Click(object sender, EventArgs e) { HttpWebRequest request = null; HttpWebResponse response = null; ...
  • javascript怎么获取指定url网页中内容 一、总结 一句话总结:推荐jquery中ajax,简单方便。 1、js能跨域操作么? javascript出于安全机制不允许跨域操作。 二、用php获取 javascript出于安全机制不...

    javascript怎么获取指定url网页中的内容

    一、总结

    一句话总结:推荐jquery中ajax,简单方便。

     

    1、js能跨域操作么?

    javascript出于安全机制不允许跨域操作的。

     

     

    二、用php获取

    javascript出于安全机制不允许跨域操作的。因此不能抓取其他网站的内容。
    可以使用php中的
    echo file_get_contents("网址");

    也可以使用curl
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,"网址");
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    echo $data=curl_exec($ch);
    curl_close($ch);
     

    三、jquery中ajax获取

    用ajax。

    引入jquery的话,

    1
    2
    3
    $("button").click(function(){
       $("div").load('test.html');
    });

    如果你要获取这个页面某个id或者类的html还可以这么写

    1
    2
    3
    $("button").click(function(){
       $("div").load('test.html #container');
    });

     这个可以直接把新页面的html元素加载到指定的div或者别的元素里面。

    如果你要纯代码的话,那再获取这个div的html就可以了。

    1
    $("div").html();

     

     

    四、通过node.js获取

    以前一直听说有爬虫这种东西,稍微看了看资料,貌似不是太复杂。

    正好了解过node.js,那就基于它来个简单的爬虫。

     

    1.本次爬虫目标:

    从拉钩招聘网站中找出“前端开发”这一类岗位的信息,并作相应页面分析,提取出特定的几个部分如岗位名称、岗位薪资、岗位所属公司、岗位发布日期等。并将抓取到的这些信息,展现出来。

     

    初始拉钩网站上界面信息如下:

     

    2.设计方案:

    爬虫,实际上就是通过相应的技术,抓取页面上特定的信息。

    这里主要抓取上图所示岗位列表部分相关的具体岗位信息。

    首先,抓取,就得先有地址url:

    http://www.lagou.com/jobs/list_%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91?kd=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91&spc=1&pl=&gj=&xl=&yx=&gx=&st=&labelWords=label&lc=&workAddress=&city=%E5%85%A8%E5%9B%BD&requestId=&pn=1

    这个链接就是岗位列表的第一页的网页地址。

    我们通过对地址的参数部分进行分析,先不管其他选择的参数,只看最后的参数值:pn=1

    我们的目的是通过page来各个抓取,所以设置为pn = page;

    其次,爬虫要获取特定信息,就需要特定代表的标识符。

    这里采用分析页面代码标签值、class值、id值来考虑。

    通过Firebug对这一小部分审查元素

    分析得出将要获取哪些信息则需要对特定的标识符进行处理。

     

    3.代码编写:

    按照预定的方案,考虑到node.js的使用情况,通过其内置http模块进行页面信息的获取,另外再通过cheerio.js模块对DOM的分析,进而转化为json格式的数据,控制台直接输出或者再次将json数据传送回浏览器端显示出来。

    (cheerio.js这东西的用法很简单,详情可以自行搜索一下。其中最主要的也就下边这份代码了,其余的跟jQuery的用法差不多。

    就是先将页面的数据load进来形成一个特定的数据格式,然后通过类似jq的语法,对数据进行解析处理)

    var cheerio = require('cheerio'),
        $ = cheerio.load('<h2 class="title">Hello world</h2>');
    
    $('h2.title').text('Hello there!');
    $('h2').addClass('welcome');
    
    $.html();
    //=> <h2 class="title welcome">Hello there!</h2>

     

    采用express模块化开发,按要求建立好项目后。进入项目目录,执行npm install安装所需依赖包。如果还不了解express的可以  到这里看看

    爬虫需要cheerio.js 所以另外require进来, 所以要另外  npm install cheerio

    项目文件很多,为了简单处理,就只修改了其中三个文件。(index.ejs  index.js   style.css )

    (1)直接修改routes路由中的index.js文件,这也是最核心的部分。

    还是看代码吧,有足够的注释

     1 var express = require('express');
     2 var router = express.Router();
     3 var http = require('http');
     4 var cheerio = require('cheerio');
     5 
     6 /* GET home page. */
     7 router.get('/', function(req, res, next) {
     8   res.render('index', { title: '简单nodejs爬虫' });
     9   });
    10 router.get('/getJobs', function(req, res, next) { // 浏览器端发来get请求
    11 var page = req.param('page');  //获取get请求中的参数 page
    12 console.log("page: "+page);
    13 var Res = res;  //保存,防止下边的修改
    14 //url 获取信息的页面部分地址
    15 var url = 'http://www.lagou.com/jobs/list_%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91?kd=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91&spc=1&pl=&gj=&xl=&yx=&gx=&st=&labelWords=label&lc=&workAddress=&city=%E5%85%A8%E5%9B%BD&requestId=&pn=';
    16 
    17 http.get(url+page,function(res){  //通过get方法获取对应地址中的页面信息
    18     var chunks = [];
    19     var size = 0;
    20     res.on('data',function(chunk){   //监听事件 传输
    21         chunks.push(chunk);
    22         size += chunk.length;
    23     });
    24     res.on('end',function(){  //数据传输完
    25         var data = Buffer.concat(chunks,size);  
    26         var html = data.toString();
    27     //    console.log(html);
    28         var $ = cheerio.load(html); //cheerio模块开始处理 DOM处理
    29         var jobs = [];
    30 
    31         var jobs_list = $(".hot_pos li");
    32         $(".hot_pos>li").each(function(){   //对页面岗位栏信息进行处理  每个岗位对应一个 li  ,各标识符到页面进行分析得出
    33             var job = {};
    34             job.company = $(this).find(".hot_pos_r div").eq(1).find("a").html(); //公司名
    35             job.period = $(this).find(".hot_pos_r span").eq(1).html(); //阶段
    36             job.scale = $(this).find(".hot_pos_r span").eq(2).html(); //规模
    37 
    38             job.name = $(this).find(".hot_pos_l a").attr("title"); //岗位名
    39             job.src = $(this).find(".hot_pos_l a").attr("href"); //岗位链接
    40             job.city = $(this).find(".hot_pos_l .c9").html(); //岗位所在城市
    41             job.salary = $(this).find(".hot_pos_l span").eq(1).html(); //薪资
    42             job.exp = $(this).find(".hot_pos_l span").eq(2).html(); //岗位所需经验
    43             job.time = $(this).find(".hot_pos_l span").eq(5).html(); //发布时间
    44 
    45             console.log(job.name);  //控制台输出岗位名
    46             jobs.push(job);  
    47         });
    48         Res.json({  //返回json格式数据给浏览器端
    49             jobs:jobs
    50         });
    51     });
    52 });
    53 
    54 });
    55 
    56 module.exports = router;

    (2)node.js抓取的核心代码就是上面的部分了。

    下一步就是将抓取到的数据展示出来,所以需要另一个页面,将views中的index.ejs模板修改一下

     1 <!DOCTYPE html>
     2 <html>
     3   <head>
     4     <title><%= title %></title>
     5     <link rel='stylesheet' href='/stylesheets/style.css' />
     6   </head>
     7   <body>
     8     <h3>【nodejs爬虫】 获取拉勾网招聘岗位--前端开发</h3>
     9     <p>初始化完成 ...</p>
    10     <p><button class="btn" id="btn0" onclick="cheerFetch(1)">点击开始抓取第一页</button></p>
    11     <div class="container">
    12     <!--<div class="jobs"> </div>-->
    13     </div>
    14     <div class="footer">
    15     <p class="fetching">数据抓取中 ... 请稍后</p>
    16         <button class="btn" id="btn1" onclick="cheerFetch(--currentPage)">抓取上一页</button>
    17         <button class="btn" id="btn2" onclick="cheerFetch(++currentPage)">抓取下一页</button>
    18     </div>
    19     <script type="text/javascript" src="javascripts/jquery.min.js"></script>
    20     <script type="text/javascript">
    21     function getData(str){   //获取到的数据有杂乱..需要把前面部分去掉,只需要data(<em>......<em>  data)
    22         if(str){
    23         return str.slice(str.lastIndexOf(">")+1);
    24     }
    25 }
    26 
    27 document.getElementById("btn1").style.visibility = "hidden";
    28 document.getElementById("btn2").style.visibility = "hidden";
    29 var currentPage = 0;  //page初始0
    30 
    31 function cheerFetch(_page){  //抓取数据处理函数
    32     if(_page == 1){ 
    33         currentPage  = 1;      //开始抓取则更改page
    34     }
    35     $(document).ajaxSend(function(event, xhr, settings) {  //抓取中...
    36         $(".fetching").css("display","block");
    37     });
    38     $(document).ajaxSuccess(function(event, xhr, settings) {  //抓取成功
    39         $(".fetching").css("display","none");
    40     });
    41     $.ajax({   //开始发送ajax请求至路径 /getJobs  进而作页面抓取处理
    42         data:{page:_page},  //参数 page = _page
    43         dataType: "json",
    44         type: "get",
    45         url: "/getJobs",
    46         success: function(data){   //收到返回的json数据
    47             console.log(data);
    48             var html = "";
    49             $(".container").empty();
    50             if(data.jobs.length == 0){ 
    51                 alert("Error2: 未找到数据..");
    52                 return;
    53             }
    54             for(var i=0;i<data.jobs.length;i++){   //遍历数据并提取处理
    55                 var job = data.jobs[i];
    56                 html += "<div class='jobs'><p><span >岗位序号:</span>  "+((i+1)+15*(currentPage-1))+"</p>"+
    57                 "<p>岗位名称:<a href='"+job.src+"'target='_blank'>"+job.name+"</a></p>"+
    58                 "<p><span >岗位所在公司:</span>  "+job.company+"</p>"+
    59                 "<p><span>公司阶段:</span>  "+getData(job.period)+"</p>"+
    60                 "<p><span>岗位规模:</span>  "+getData(job.scale)+"</p>"+
    61                 "<p><span>岗位所在城市:</span>  "+job.city+"</p>"+
    62                 "<p><span>岗位薪资:</span>  "+getData(job.salary)+"</p>"+
    63                 "<p><span>岗位最低经验要求:</span>  "+getData(job.exp)+"</p>"+
    64                 "<p><span>岗位发布时间:</span>  "+getData(job.time)+"</p>"+
    65                 "</div>"
    66             }
    67 
    68             $(".container").append(html);  //展现至页面
    69             if(_page == 1){ 
    70                 document.getElementById("btn1").style.visibility = "hidden";
    71                 document.getElementById("btn2").style.visibility = "visible";
    72             }else if(_page > 1){ 
    73                 document.getElementById("btn1").style.visibility = "visible";
    74                 document.getElementById("btn2").style.visibility = "visible";
    75             }
    76         },
    77         error: function(){ 
    78             alert("Error1: 未找到数据..");
    79         }
    80     });
    81 }
    82 
    83     </script>
    84   </body>
    85 </html>

    (3)当然了,也少不了样式部分的简单修改  public文件下的 style.css

    body {
      padding: 20px 50px;
      font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
    }
    a {
      color: #00B7FF;
      cursor: pointer;
    }
    .container{position: relative;width: 1100px;overflow: hidden;zoom:1;}
    .jobs{margin: 30px; float: left;}
    .jobs span{ color: green; font-weight: bold;}
    .btn{cursor: pointer;}
    .fetching{display: none;color: red;}
    .footer{clear: both;}


    基本改动的也就这三个文件了。

    所以,如果要测试一下的话,可以新建项目后,直接修改对应的那三个文件。

    修改成功后,就可以测试一下了。

     

    3.测试结果

    1) 首先在控制台中执行 npm start

    2) 接下来在浏览器输入http://localhost:3000/开始访问

    3) 点击开始抓取(这里每次抓取15条,也就是原网址对应的15条)

    ...

    4) 再抓取下一页也还是可以的~

     

    5) 再来看看控制台的输出

     

     

        看看看看...多简单的小爬虫呀..

        简单归简单,最重要的是,知道了最基本的处理形式。

     

     

     

     

     

     

     

     

    转载于:https://www.cnblogs.com/Renyi-Fan/p/9267690.html

    展开全文
  • 一、.net core 获取客户端IP ,获取完整URL C#代码 string ip = HttpContext.Connection.RemoteIpAddress.ToString();... 说明:上面两行代码我们都知道,但是如果你是使用代理服务器托管.net core网站的,例...

    一、.net core 获取客户端IP ,获取完整URL

            C#代码

    string ip = HttpContext.Connection.RemoteIpAddress.ToString();
    string url = Request.GetDisplayUrl();

             说明:上面两行代码我们都知道,但是如果你是使用代理服务器托管.net core网站的,例如nginx,会出现你获取只是代理服务器IP,而不是真实客户的IP。

     

    二、解决问题

         1.配置nginx 三个转接头Host 、X-Forwarded-For、X-Forwarded-Proto

         2.重启nginx 服务器

    server {
        listen  80;
        server_name www.***.com;
        add_header X-Frame-Options "SAMEORIGIN";     #保护Nginx 免受点击劫持的侵害
        add_header X-Content-Type-Options "nosniff"; #可阻止大部分浏览器通过MIME方式探查来自已声明内容类型的响应
        location / {
            proxy_pass   http://172.18.0.12:5000;
            proxy_set_header  Host $host;    #配置请求转接头1 
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; #配置请求转接头2
            proxy_set_header  X-Forwarded-Proto $scheme;  #配置请求转接头3
          }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
    

           3.在项目Startup.cs 配置(C#代码)

     
     public void ConfigureServices(IServiceCollection services)
     {
        services.AddMvc();
    
        //配置中间件以转接 X-Forwarded-For 和 X-Forwarded-Proto标头
        services.Configure<ForwardedHeadersOptions>(options =>
        {
            options.ForwardedHeaders = 
                ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
             //仅允许受信任的代理和网络转接头。否则,可能会受到 IP 欺骗攻击
             options.KnownProxies.Add(IPAddress.Parse("172.18.0.100"));
    
        });
     }
    
     public void Configure(IApplicationBuilder app, IHostingEnvironment env)
     {
        //启动配置中间件
        app.UseForwardedHeaders();
    
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }
         ...
        app.UseMvc();
     }

     

     .net core微软官方文档地址

      https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.2#configure-nginx

      https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-2.2

     

     ———来自原创 风吹蛋蛋飘~

     

    展开全文
  • 怎么获取客户端请求的url地址,请参阅下面的代码: /// /// 获得当前请求网站的URL /// /// protected string GetHostUrl() { string AppUrl

    怎么获取客户端请求的url地址,请参阅下面的代码:

        /// <summary>
        /// 获得当前请求网站的URL
        /// </summary>
        /// <returns></returns>
        protected string GetHostUrl()
        {
            string AppUrl = "http://{0}{1}";
            string host = this.Request.Url.Host;
            if (!Request.Url.IsDefaultPort) host += ":" + Request.Url.Port;     
            return string.Format(AppUrl, host, Request.Url.AbsolutePath.ToString());
        }

    主要用到的类:Url


    展开全文
  • 注册过程认真填写好自己邮箱、用户名、和密码,特别是邮箱这一部分,官网它会发送一封邮件给你所注册邮箱,但是很多邮箱都默认会把Gravatar邮件视为垃圾邮件给拦截掉,比如在网易邮箱、QQ邮箱都会拦截,此时你...

    一、官网注册

    1.打开Gravatar官网https://en.gravatar.com,并点击Sign In登录,没有注册过的需要注册一下
    在这里插入图片描述
    注册的过程认真填写好自己的邮箱、用户名、和密码,特别是邮箱这一部分,官网它会发送一封邮件给你所注册的邮箱,但是很多邮箱都默认会把Gravatar邮件视为垃圾邮件给拦截掉,比如在网易邮箱、QQ邮箱都会拦截,此时你需要在邮箱设置把WordPress.com添加白名单,以网易邮箱为例
    在这里插入图片描述

    二、注册完成并成功登录

    点击头像或者是My Gravatars,并单击Add a new Image,在里面添加的自己头像
    在这里插入图片描述

    三、上传头像

    在这里插入图片描述
    有四种头像上传方式,一般选择第一个,也就是本地上传

    1、选择一张图片并点击“next”
    2、裁剪图片并选择“Crop and Finish!”完成头像的提交
    3、最后,你需要对每个头像设置评级,不过一般都选 G(普通级)。
    G-普通级,Gravatar 适合展示于任何观众类型的网站。
    PG-家长指引级,Gravatars 可能包含粗俗手势、挑逗性衣著,轻度发誓的话语或轻微暴力。
    R-限制级,Gravatars 可能包含粗俗、亵渎、暴力、裸露或吸毒等内容。
    X-成人级的,Gravatars 可能包含淫秽的色情图像或骚扰性暴力图像。
    4、头像上传成功了,一般等个两三分钟你新上传的头像就会正常显示出来,今后你再到任意一个使用了 Gravatar 头像的网站留言,留言旁边就会显示你设定的头像。

    当然你也可以打开你自己的链接测试一下,方法是:回到个人主页,复制头像链接,再到浏览器粘贴URL即刻显示出来。选择http这个url链接
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 考虑到空间不足的原因,我想要在数据库中存储的是网上视频的url,而不是本地的视频地址。 我知道可以通过审查元素来找到,但是他是不齐全的路径,用一些工具也无法正常获取。 网上有很多解析接口,有的并不行有的...
  • //PM2.5数据以经由互联网抓取各城市PM2.5等数据,或者直接调用部分网站开放API接口获取各城市PM2.5等数据,如www.pm25.in 、等多个网站都开放了pm2.5数据接口、天气等实时查询API。 //解析json数据时候...
  • wget的url获取方式

    2019-04-18 11:26:00
    每次用wget都是在网上查相应的url,但以前没怎么关注过这个url是怎么获取到的,这里总结一下 这里以下载jekins为例: 打开jekins网站:https://jenkins.io/download/ 选择相应的版本下载: 打开google浏览器...
  • 在爬一个金融类网站的数据的时候发现jousp获取的html里面居然有个div是空的 ![图片说明](https://img-ask.csdn.net/upload/201909/09/1568025443_67849.png) 然而在chrome的后台看,我需要的数据都在这个div里...
  • 我在网站登录页的url后面加了一个参数 /page.aspx?id=*** 内容页都是用了同一个模板页 想在模板页后台获取url传递的参数 要怎么获取
  • 如题,公司让做一款简单新闻类安卓APP,我是只小白,懂得并不多,但是网站是用php写,我并不懂php,没有接口,我应该如何获取公司网站新闻url,有源码。
  • 今天在做一个网站,想到怎么登录后返回原来也页面,到网上找了这个函数,把URL放到SESSION里面去,搞定,嘿嘿! ---------------------获取当前Url参数函数---------------------Private Function GetUrl() ...
  • 音乐URL获取&下载

    千次阅读 多人点赞 2019-11-15 15:33:54
    来说,音乐URL的获取是比较简单,学过爬虫人应该都会,下面就来看看应该怎么获取吧! 首先得打开浏览器,并找到一个音乐的网站,比如:网易云、酷狗等等。 当时有小伙伴说这个音乐只有IE浏览器打开才有...
  • 我想获取打开网站title值“正式受理”,并将这个值写入Excel,应该怎么做,请各位大神赐教 ![图片说明](https://img-ask.csdn.net/upload/201806/27/1530089229_845462.jpg) 这是我写代码 ****************...
  • 为了节约开发成本,很多Native-H5混合App采用手机网站支付方式去实现支付模块。但手机网站支付网络依赖...下面我就给大家介绍一下使用WKUIDelegate协议怎么解决手机网站支付转Native支付:一:sdk导入流程请查看二
  • 如何获得网站api的url

    2017-08-13 07:09:05
    最近在学习“Python编程,从入门到实践”,里面有一章讲从GitHubAPI上获取开源项目信息,比如利用...我问题是,假如想从其它的网站获取信息,那么该怎么调用api呢?同时api调用语法规则又是怎样呢?
  • 用jsoup抓取网页获取网页源码时候,得到源码和在网站上面点击右键查看源码不相同,怎么解决 Document doc = Jsoup.parse(new URL(url), 5000);
  • 网站为中国证券网 “http://www.cnstock.com/” ...访问这个传递json数据Request URL时,出现了404 ![图片说明](https://img-ask.csdn.net/upload/201901/28/1548686509_543560.png) 想请教一下如何解决
  • //主要是这句,怎么把路径变量和随机生成uuid(文件名)组合起来变成保存文件路径??? //建立一个新文件 FileOutputStream fos = new FileOutputStream(new File(newImageName)); ...
  • 请问,如何用fiddler来抓取网站登录时候的URL和提交的参数,比如网站“一号店”的登录网址...我怎么获取这个提交的URL及参数?
  • 如果播放本地服务器视频刷新第二次URL获取失败。如果缓存下来后,又怎么刷新都行。有没有人遇到过类似情况,求指点 ![图片说明](https://img-ask.csdn.net/upload/201511/07/1446858770_912058.jpg) ![图片...
  • 可以获取不同网站(新浪新闻,搜狐新闻,新华网等等)的不同新闻信息(体育新闻,娱乐新闻等),我想通过webservice去提取,但一直找不到相关的webservice,有哪位大哥知道怎么做或者知道有webservice的URL可以...
  • 在爬取网站过程中,通常会遇到局部动态刷新情况,当你点击“下一页”或某一页时,它的数据就进行刷新,但其顶部的URL始终不变。这种局部动态刷新的网站怎么爬取数据呢?某网站数据显示如下图所示,当点击“第五页...
  • 通过HttpURLConnection我可以轻松的获取网站数据: public class NewSocket { public static String getNetData(String host) throws IOException { HttpURLConnection conn = (HttpURLConnection) new ...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 249
精华内容 99
关键字:

怎么获取网站的url