如何获取动态网页中的数据

我不懂网页开发,对静态的网页分析还行,类似这样的动态网页http://vip.stock.finance.sina.com.cn/mkt/?f=caishou#new_blhy 就毫无头绪了。查看网页源代码,找不到动态数据是怎么获取的。对于这类动态网页,我怎么找到获取动态网页的接口,写一个本地网页,通过浏览器运行,把这些数据获取之后,写到本地的文件之中,方便进一步处理。不讲究效率,越简单越好。

1个回答

可以集成一个浏览器内核 获取渲染之后的文档,参考:https://my.oschina.net/flashsword/blog/147334

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
httpclient 动态网页获取
public static String getHtmlByUrl(String url){ String html = null; HttpClient httpClient = new DefaultHttpClient();//创建httpClient对象 HttpGet httpget = new HttpGet(url);//以get方式请求该URL try { HttpResponse responce = httpClient.execute(httpget);//得到responce对象 int resStatu = responce.getStatusLine().getStatusCode();//返回码 if (resStatu==HttpStatus.SC_OK) {//200正常 其他就不对 //获得相应实体 HttpEntity entity = responce.getEntity(); System.out.println(Integer.toString(resStatu)); if (entity!=null) { html = EntityUtils.toString(entity);//获得html源代码 } } } catch (Exception e) { System.out.println("访问【"+url+"】出现异常!"); e.printStackTrace(); } finally { httpClient.getConnectionManager().shutdown(); } //System.out.println(html); return html; } 上述代码只能抓静态网页数据 麻烦看下上面代码怎么改才能获取动态网页数据啊
当网页采用js动态获取数据时,HttpClient应如何获取数据?
总的问题是这样的:因为我需要在两个城市来回跑,但是机票价格不断变化,就想通过.NET的HttpClient对携程网的网页进行访问,定时为每几小时一次,然后在后台进行一下分析,当某个机票价格贴近预期的最低价的时候通知我。 我用的VB.NET,但是C#应该更广泛,如果哪位大神可以帮忙回答用C#就可以。 代码如下,我先写了一个类 ``` Imports System.IO Imports System.Net.Http Public Class MySpider Dim callback As CallBackSub Public Sub CallBackTo(ByVal callclass As CallBackSub) callback = callclass End Sub Public Shared Async Sub GetPage(ByVal url As String, ByVal callclass As CallBackSub) Dim MyHttpClient As New HttpClient() Dim str As String = Await GetStringFromUrl(url) Dim callback0 As CallBackSub = callclass callback0.Invoke(str) End Sub Private Shared Async Function GetStringFromUrl(ByVal Url As String) As Task(Of String) Using client As HttpClient = New HttpClient() Try Dim response As HttpResponseMessage = Await client.GetAsync(Url) response.EnsureSuccessStatusCode() Dim responseBody As String = Await response.Content.ReadAsStringAsync() Return responseBody Catch e As HttpRequestException Console.WriteLine(vbLf & "Exception Caught!") Console.WriteLine("Message :{0} ", e.Message) Return Nothing End Try End Using End Function End Class ``` 这个类中的GetStringFromUrl是微软给的例程,然后我用了一个委托来把获取的字符串传递给Form窗体。(我的.NET仅仅勉强入门,正准备task和线程这些,就姑且用委托了,如果有正确的处理方法还麻烦告诉一下) 窗体代码就不贴出来了,就是一个textbox用来接收委托传过去的数据,然后一个button控制getpage 然后问题就在于,我发现我取出response中的数据后,根本找不到机票价格 ![图片说明](https://img-ask.csdn.net/upload/201901/29/1548767543_874475.jpg) 然后我在浏览器中把网页保存了之后,发现里面有很多js和css文件,我就想是不是有些数据是通过js动态获取的。 最后我试了Windows窗体控件WebBroswer,在赋值了URL之后,仅仅这一句代码就得到了我想要的机票价格数据 ``` TextBox1.Text = WebBrowser1.Document.All(1).InnerText ``` ![图片说明](https://img-ask.csdn.net/upload/201901/29/1548767560_985205.png) 虽然问题可以说暂时解决,但是我还是觉得,HttpClient作为微软推荐使用的一个类,应该不会处理不了这种动态获取数据的情况,就想请教下各位使用.NET得前辈,是否可以用HttpClient类处理这个问题呢? 如果能给出代码我会感激不尽,如果给一个资料的链接也一样很感谢!
使用java加载动态网页
最近遇到一个难题,使用httpclient获取数据的时候,获取不到动态加载的数据,尝试过htmlunit,也试过jrex,但是感觉效果都不是很好。 百度了一下,别人说phantomjs也不错,但是,没怎么学过js,不是很懂如何使用phantomjs获取整个网页数据。 求各位大神给一下使用java加载动态网页的方式。(除了htmlunit和jrex)或者说说如何使用phantomjs获取整个网页数据。 小弟在此不胜感激
Java爬虫如何实现在需要点击的网页中获取需要的内容
大佬们好!作为一个爬虫新手,最近在尝试用Java爬虫获取动态网页数据是遇到了一些问题。我要爬的网站在点击之后数据会产生一些变化,我在用select定位到我需要的数据后依然无法成功将其打印出来,想请教一下在这种情况下怎么获取我需要的数据。感谢!
python爬虫selenium+phantomjs获取JS动态网页
网页有大量数据在不断加载,如何连续获取这些内容,使用time.sleep()修改不同时间,但是得到的结果还是一样的,只有几个数据,这个问题怎么解决啊,求打救
echarts动态获取后台数据
一.现在我有JSP页面,页面里面有个div中有一个panel面板,面板种面嵌入的map地图。 ``` <div class="panel panel-default"> <div class="panel-heading"><h3 class="panel-title"><i class="fa fa-bar-chart-o fa-fw"></i>中国地图 </h3></div> <div class="panel-body"> <div style="mini-width:400px;height:350px" data-toggle="echarts" data-type="map" data-url="pop/echarts-mapData.html"></div> </div> </div> </div> ``` 二。其中,data-url="pop/echarts-mapData.html",引入的是一个外部html页面,但是里面是死数据,并且是JSON格式的数据。代码如下: ``` { "tooltip": { "trigger": "item" }, "setTheme": { "theme": "macarons" }, "legend": { "orient": "vertical", "x": "left", "data": [ "党员人数" ] }, "dataRange": { "min": 0, "max": 300, "x": "left", "y": "bottom", "text": [ "高", "低" ], "calculable": true }, "toolbox": { "show": true, "orient": "vertical", "x": "right", "y": "center", "feature": { "mark": { "show": true }, "dataView": { "show": true, "readOnly": false }, "restore": { "show": true }, "saveAsImage": { "show": true } } }, "series": [ { "name": "党员人数", "type": "map", "mapType": "重庆|江北区", "roam": false, "itemStyle": { "normal": { "label": { "show": true } }, "emphasis": { "label": { "show": true } } }, "data": [ { "name": "江北区", "value": 299 } ] } ] } ``` 三。很明显,↑↑↑↑↑↑上面的代码直接就是地图里面的各种参数(虽然数据是死的)。 图片效果如下: ![图片说明](https://img-ask.csdn.net/upload/201711/08/1510132266_325728.png) 问题: echarts的官网我也逛过多次了,但是例子都是新建的一个html网页,在里面加入的js代码,并配合ajax请求获取的后台数据。但是这样的话,加载出来的地图却是一个单独的html网页效果而已,并不能达到我嵌入JSP页面的div中这样的效果。 所以,请教各位能伸出援手,帮帮忙。---我的目的就是想,不要单独的一个html页面,而是就像上面的死数据一样,嵌入在JSP页面中,只是数据变为从后台获取而已。
java如何获取ajax网页内容
需求是填写一个jsp路径,在控制台返回该jsp生成的动态网页的html代码,我用的是HttpClient这个类实现的,但是返回的页面代码没有发送ajax请求获得数据,页面用浏览器打开是不完整的,求大神解答。
htmlunit爬取Ajax动态生成的网页获取不到ajax出来的数据
WebClient mWebClient = new WebClient(BrowserVersion.CHROME); mWebClient.getOptions().setUseInsecureSSL(true); mWebClient.getOptions().setCssEnabled(true); mWebClient.getOptions().setActiveXNative(true); mWebClient.getOptions().setJavaScriptEnabled(true); mWebClient.getOptions().setThrowExceptionOnScriptError(false); mWebClient.getOptions().setThrowExceptionOnFailingStatusCode(false); mWebClient.getOptions().setRedirectEnabled(true); mWebClient.getOptions().setTimeout(0); mWebClient.setJavaScriptTimeout(0); mWebClient.waitForBackgroundJavaScript(0); mWebClient.setAjaxController(new NicelyResynchronizingAjaxController()); final HtmlPage mHtmlPage = mWebClient.getPage("http://localhost:8080/#main/observationAnalysis/performance/performanceGlobal"); Thread.sleep(60000); ResponseUtils.renderText(response, mHtmlPage.asText()); ``` ```
怎么获取网站隐藏的动态的浏览次数和相关问题
现在我需要获取某网站页面浏览次数的实时数据,这个数据时在网页源代码中是隐藏和实时更新的,怎么批量获取并导出到excel里面,此外类推怎么获取相关的如标题之类的数据导出并保存,具体是怎么实现的。
哪位朋友能告诉我一下:对于36氪、知乎、网易新闻这类APP,详细内容页面是如何获取的
它们上面的详细页面中的内容是如何获取的,我自己理解的是APP端通过webview从网页端直接获取(而不是通过http连接让服务器端返回数据,然后动态添加到APP端的Imageview和textview来显示图片和内容,我对网页部分开发不是特别了解,如果说是通过webview获取的,那么有没有什么格式要求。求大神解答
请教如何用nodejs将网页转成jpg图片
公司用的nodejs部署的后台服务。现在想动态获取数据后,生成一张图片。思路是通过获取 的数据,访问指定的网页,然后通过截取网页来生成图片。不知道有没有什么比较好用的插件。 之前用了webshot,但是好像部署到服务器就出错了。也不知道为什么。想问问还有其他方法吗?
使用python抓取网站动态数据不能获取界面实际展示结果
目标路径:http://qy1.sfda.gov.cn/datasearch/face3/search.jsp?tableId=20 当前使用方式: #coding=utf-8 import urllib2 from bs4 import BeautifulSoup addr ='http://qy1.sfda.gov.cn/datasearch/face3/search.jsp?tableId=20' up = urllib2.urlopen(addr) html = up.read() print(html) 问题: 实际上需要网页打开展示的数据,但结果却获取到一堆script。 请大神指导一下!
flask 页面跳转到动态网页
现在有两个html文件,一个用来显示A班成绩另一个用来显示B班成绩,要获取两个班的成绩都必须通过服务器。现在想显示完A班成绩之后等待10秒跳转到B班。 之前试验了下,在html文件里使用js实现页面跳转到到另一个静态html文件(参考http://www.cnblogs.com/aszx0413/articles/1886819.html),但是这种方式只能跳转静态页面吧?怎么跳转到另一个能从服务器中获取数据的html文件? 本人小白,求解答
如何用Jsoup爬取网址中懒加载的图片地址?
RT,最近学习用Jsoup爬取极客公园网站的数据,但发现用这个开源库只能爬取到静态的数据,像是首页新闻的图片和作者的头像不能够爬取出来,想问下大神怎么爬取动态加载后的数据呢? 网址: https://www.geekpark.net/ 想爬取的数据: 新闻列表<article-item>下的文章图片<img-cover>和作者头像<img-box>的信息,发现待爬图片网址的属性是 lazy="loaded",在网页的操作是,当网页请滑到相应的位置时,对应的图片加载出来。 不知道这个是不是动态的数据,请大神指导,谢谢!! 想爬取网址的截图如下 ![想获取的两个图片链接](https://img-ask.csdn.net/upload/201809/29/1538234830_153852.png) ![用Jsoup获取到的document](https://img-ask.csdn.net/upload/201809/29/1538234867_764462.png)
jsoup 获取数据出错。换了代理ip也不行
如题。jsoup获取数据出错。用了代理去访问也不行。 先贴爬取页面的代码 ``` @Slf4j @Component public class SpiderUtil { @Resource private DynamicIpUtil dynamicIpUtil; /** * 根据url爬取页面信息 * * @param url url * @return 页面信息 */ public Document spiderDocument(String url) { Document pageDoc = null; try { Connection con= Jsoup.connect(url) .userAgent("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; BIDUBrowser 2.x)") .timeout(5000); /*.ignoreHttpErrors(true) .followRedirects(true)*/ Connection.Response resp = con.execute(); if (resp.statusCode() == 200){ pageDoc = con.get(); } else { log.error("http status error"); dynamicIpUtil.changeMyIp(); spiderDocument(url); } if(pageDoc == null || pageDoc.toString().trim().equals("")) {// 表示ip被拦截或者其他情况 log.error("ip被拦截 无内容"); dynamicIpUtil.changeMyIp(); spiderDocument(url); } } catch (Exception e) { log.error("ip被拦截 异常: {}", e); dynamicIpUtil.getMyIpInfo(); dynamicIpUtil.changeMyIp(); spiderDocument(url); } if (ipDefensed(url, pageDoc)) { // 如果被ip限制了,更换动态ip dynamicIpUtil.changeMyIp(); spiderDocument(url); } return pageDoc; } /** * 判断ip是否被封 * * @param pageDoc 页面信息 * @return ip */ private boolean ipDefensed(String url, Document pageDoc) { boolean ipDefensed = false; if (url.contains("anjuke.com")) { ipDefensed = AJKIpDefense(pageDoc); } return ipDefensed; } /** * 安居客判断ip是否被封 * * @param pageDoc 页面信息 */ private boolean AJKIpDefense(Document pageDoc) { log.error("ip 被拦截 安居客"); boolean ajkppDefensed = false; String title = pageDoc.title(); if (title.equals("访问验证-安居客")) { ajkppDefensed = true; } return ajkppDefensed; } } ``` 再贴换动态ip的代码 ``` @Slf4j @Component public class DynamicIpUtil { private static List<String[]> ipAndPorts = new ArrayList<String[]>(); private static Integer ipPageNum = 1; /** * 更换动态ip */ public void changeMyIp() { String [] ipAndPort = getDynamicIpAndPort(); String ip = ipAndPort[0]; String port = ipAndPort[1]; System.setProperty("http.maxRedirects", "50"); System.setProperty("https.maxRedirects", "50"); System.getProperties().setProperty("proxySet", "true"); System.getProperties().setProperty("http.proxyHost", ip); System.getProperties().setProperty("http.proxyPort", port); System.getProperties().setProperty("https.proxyHost", ip); System.getProperties().setProperty("https.proxyPort", port); } /** * 获取ip信息 */ public void getMyIpInfo(){ try { Document ipDoc = Jsoup.connect("http://www.ip.cn") .userAgent("Mozilla") .timeout(3000) .get(); if(ipDoc != null){ String ipInfo = ipDoc.select(".well").first().text(); log.info("更换ip 成功: {}", ipInfo); } } catch (Exception e) { log.info("暂不能获取ip 信息"); } } /** * 获取动态ip * * @return 动态ip */ private String[] getDynamicIpAndPort() { String[] ipAndPort = null; if (ipAndPorts != null && ipAndPorts.size() > 0) { ipAndPort = ipAndPorts.get(0); ipAndPorts.remove(0); } else { try { Document pageDoc = Jsoup.connect("http://www.xicidaili.com/wn/" + ipPageNum) .userAgent("Mozilla") .timeout(5000) .get(); Elements elements = pageDoc.select("tr.odd"); ipPageNum ++; if(ipPageNum > 400){ ipPageNum = 1; } for(Element element : elements){ String[] ipPort = new String[2]; String ip = element.child(1).text(); String port = element.child(2).text(); String noName = element.child(4).text(); // if(!noName.equals("高匿")){ // continue; // } String speedStr = element.child(6).select(".bar").first().attr("title"); double speed = Double.valueOf(speedStr.substring(0, speedStr.indexOf("秒"))); String timeStr = element.child(7).select(".bar").first().attr("title"); double time = Double.valueOf(timeStr.substring(0, timeStr.indexOf("秒"))); if(speed <= 1 && time <= 1){ ipPort[0] = ip; ipPort[1] = port; ipAndPorts.add(ipPort); } } return getDynamicIpAndPort(); } catch (IOException e) { log.error("get DynamicIpError error info :\n {}", e); } } return ipAndPort; } } ``` 如上。在获取这个网页上的数据的时候会出现问题 https://cd.zu.anjuke.com/fangyuan/p1/ 具体的错误有几种。 java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:150) at java.net.SocketInputStream.read(SocketInputStream.java:121) at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) at java.io.BufferedInputStream.read1(BufferedInputStream.java:286) at java.io.BufferedInputStream.read(BufferedInputStream.java:345) at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:703) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647) at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:2000) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183) at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:563) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540) at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227) org.jsoup.HttpStatusException: HTTP error fetching URL at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:590) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:587) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540) at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227) java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 503 Too many open connections" at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:2084) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183) at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:563) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540) at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227) java.net.SocketException: Unexpected end of file from server at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:790) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647) at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:2000) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183) at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:563) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:587) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540) at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227) 请各位高手帮我看下。谢谢了。在线等。急急急急急急!!!!!
如何将Html网页生成的二维码图片保存成PNG图片文件存放到服务器上
目前已实现动态生成二维码图片,生成地址:http://wx.yseasy.com/erweima_1.asp?val=yyy 但需要将该图片保存下来以方便调用,目前想到有两种方案: 1、将图片的base64位编码保存到数据库,调用时解码显示//(这种方法小菜不知该如何获取它的base64位编码) 2、将图片保存成文件存放到服务器,再将图片路径保存到数据库,再调用显示//(这种方法小菜不知道该如何将此生成图保存为文件)
怎么把网页1的导航完美移植到网页2的轮播图上边的位置使导航和轮播图结合成一个网页
网页1带导航的 <!DOCTYPE html> <html> <head> <link rel="icon" href="images/favicon.ico" type="img/x-ico" /> <title>山东金泽网络科技有限公司</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="utf-8"> <meta name="keywords" content="" /> <script type="application/x-javascript"> addEventListener("load", function () { setTimeout(hideURLbar, 0); }, false); function hideURLbar() { window.scrollTo(0, 1); } </script> <link href="css/bootstrap.css" rel='stylesheet' type='text/css' /> <link rel="stylesheet" href="css/flexslider.css" type="text/css" media="screen" property="" /> <link href="css/style.css" rel='stylesheet' type='text/css' /> <link href="css/simpleLightbox.css" rel='stylesheet' type='text/css' /> <link href="css/fontawesome-all.css" rel="stylesheet"> <link href="http://fonts.googleapis.com/css?family=Poppins:100i,200,200i,300,400,400i,500,500i,600,600i,700,700i,800" rel="stylesheet"> </head> <body> <header> <div class="header_top" id="home"> <nav class="navbar navbar-toggleable-md navbar-light bg-faded"> <a class="navbar-brand" href="index.html"> <i class="fab fa-digital-ocean"></i> 金泽科技</a> <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mx-auto tp-nav text-center"> <li class="nav-item active"> <a class="nav-link" href="index.html">首页 <span class="sr-only">(current)</span> </a> </li> <li class="nav-item"> <a class="nav-link" href="about.html">关于</a> </li> <li class="nav-item"> <a class="nav-link" href="了解银豹.html">解决方案</a> </li> <li class="nav-item"> <a class="nav-link" href="blog.html">博客</a> </li> <li class="nav-item"> <a class="nav-link" href="contact.html">联系我们</a> </li> </ul> <form action="#" method="post" class="form-inline my-2 my-lg-0 search"> <input class="form-control mr-sm-2" type="search" placeholder="点击输入搜索..." name="Search" required> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">搜索</button> </form> </div> </nav> </div> </header> <!--//header--> </body> </html> ``` 网页2 轮播图代码: ``` <!DOCTYPE html> <html> <head> <link rel="icon" href="images/favicon.ico" type="img/x-ico" /> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>山东金泽网络科技有限公司</title> <link rel="stylesheet" href="css/style.css" /> </head> <body> <div class="c-banner"> <div class="banner"> <ul> <li><img src="img/lunbo1.jpg"></li> <li><img src="img/lunbo2.jpg"></li> <li><img src="img/lunbo3.jpg"></li> </ul> </div> <div class="nexImg"> <img src="img/nexImg.png" /> </div> <div class="preImg"> <img src="img/preImg.png" /> </div> <div class="jumpBtn"> <ul> <li jumpImg="0"></li> <li jumpImg="1"></li> <li jumpImg="2"></li> </ul> </div> </div> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript"> //定时器返回值 var time=null; //记录当前位子 var nexImg = 0; //用于获取轮播图图片个数 var imgLength = $(".c-banner .banner ul li").length; //当时动态数据的时候使用,上面那个删除 // var imgLength =0; //设置底部第一个按钮样式 $(".c-banner .jumpBtn ul li[jumpImg="+nexImg+"]").css("background-color","black"); //页面加载 $(document).ready(function(){ // dynamicData(); //启动定时器,设置时间为3秒一次 time =setInterval(intervalImg,3000); }); //点击上一张 $(".preImg").click(function(){ //清楚定时器 clearInterval(time); var nowImg = nexImg; nexImg = nexImg-1; console.log(nexImg); if(nexImg<0){ nexImg=imgLength-1; } //底部按钮样式设置 $(".c-banner .jumpBtn ul li").css("background-color","white"); $(".c-banner .jumpBtn ul li[jumpImg="+nexImg+"]").css("background-color","black"); //将当前图片试用绝对定位,下一张图片试用相对定位 $(".c-banner .banner ul img").eq(nowImg).css("position","absolute"); $(".c-banner .banner ul img").eq(nexImg).css("position","relative"); //轮播淡入淡出 $(".c-banner .banner ul li").eq(nexImg).css("display","block"); $(".c-banner .banner ul li").eq(nexImg).stop().animate({"opacity":1},1000); $(".c-banner .banner ul li").eq(nowImg).stop().animate({"opacity":0},1000,function(){ $(".c-banner ul li").eq(nowImg).css("display","none"); }); //启动定时器,设置时间为3秒一次 time =setInterval(intervalImg,3000); }) //点击下一张 $(".nexImg").click(function(){ clearInterval(time); intervalImg(); time =setInterval(intervalImg,3000); }) //轮播图 function intervalImg(){ if(nexImg<imgLength-1){ nexImg++; }else{ nexImg=0; } //将当前图片试用绝对定位,下一张图片试用相对定位 $(".c-banner .banner ul img").eq(nexImg-1).css("position","absolute"); $(".c-banner .banner ul img").eq(nexImg).css("position","relative"); $(".c-banner .banner ul li").eq(nexImg).css("display","block"); $(".c-banner .banner ul li").eq(nexImg).stop().animate({"opacity":1},1000); $(".c-banner .banner ul li").eq(nexImg-1).stop().animate({"opacity":0},1000,function(){ $(".c-banner .banner ul li").eq(nexImg-1).css("display","none"); }); $(".c-banner .jumpBtn ul li").css("background-color","white"); $(".c-banner .jumpBtn ul li[jumpImg="+nexImg+"]").css("background-color","black"); } //轮播图底下按钮 //动态数据加载的试用应放在请求成功后执行该代码,否则按钮无法使用 $(".c-banner .jumpBtn ul li").each(function(){ //为每个按钮定义点击事件 $(this).click(function(){ clearInterval(time); $(".c-banner .jumpBtn ul li").css("background-color","white"); jumpImg = $(this).attr("jumpImg"); if(jumpImg!=nexImg){ var after =$(".c-banner .banner ul li").eq(jumpImg); var befor =$(".c-banner .banner ul li").eq(nexImg); //将当前图片试用绝对定位,下一张图片试用相对定位 $(".c-banner .banner ul img").eq(nexImg).css("position","absolute"); $(".c-banner .banner ul img").eq(jumpImg).css("position","relative"); after.css("display","block"); after.stop().animate({"opacity":1},1000); befor.stop().animate({"opacity":0},1000,function(){ befor.css("display","none"); }); nexImg=jumpImg; } $(this).css("background-color","black"); time =setInterval(intervalImg,3000); }); }); //动态数据轮播图 //动态数据加载的时候不要直接点击demo.html运行否则可能请求不到本地json数据 // function dynamicData(){ // $.ajax({ // url:"js/test.json", // type:"get", // dataType:"json", // success:function(data){ // if(data.code==1){ // var data = data.data; // $.each(data,function(i){ // $(".c-banner .banner ul").append('<li><img src="'+this.img+'"></li>'); // $(".c-banner .jumpBtn ul").append('<li jumpImg="'+i+'"></li>') // }) // } // //获取图片总数量 // imgLength = $(".c-banner .banner ul li").length; // //为底部按钮定义单击事件 // $(".c-banner .jumpBtn ul li").each(function(){ // //为每个按钮定义点击事件 // $(this).click(function(){ // clearInterval(time); // $(".c-banner .jumpBtn ul li").css("background-color","white"); // jumpImg = $(this).attr("jumpImg"); // if(jumpImg!=nexImg){ // var after =$(".c-banner .banner ul li").eq(jumpImg); // var befor =$(".c-banner .banner ul li").eq(nexImg); // // //将当前图片试用绝对定位,下一张图片试用相对定位 // $(".c-banner .banner ul img").eq(nexImg).css("position","absolute"); // $(".c-banner .banner ul img").eq(jumpImg).css("position","relative"); // // after.css("display","block"); // after.stop().animate({"opacity":1},1000); // befor.stop().animate({"opacity":0},1000,function(){ // befor.css("display","none"); // }); // nexImg=jumpImg; // } // $(this).css("background-color","black"); // time =setInterval(intervalImg,3000); // }); // }); // } // }) // } </script> <div style="text-align:center;margin:10px 0; font:normal 14px/24px 'MicroSoft YaHei';"> </div> </body> </html> ``` ```
使用什么方法抓取淘宝、天猫、京东和当当网的店铺和商品信息?
由于这些电商网站有一部分产品信息是通过JS脚本动态填充进去的,能直接在网页源码里面获取到的产品信息相当有限,请问各位大神使用什么技术可以抓取到店铺和商品的完整信息?
爬虫爬取1688返回response成功但是内容为空?
今天尝试写了一个爬取1688商品页的爬虫,发现1688的代码已经不同于几年前了,前台的页面html代码居然是通过js请求返回json数据中的值解析而来,整个动态加载的html被全部封装。在网页前台浏览的时候也能明显感觉到,整个商品页不是全部一次加载完成,随着鼠标的下滑进行动态加载,直至翻页出现。找了一下网上的爬取代码,不是代码太旧就是使用selenium,因此我尝试从解析js角度来看看能否爬到数据。 我搜索的关键词为:大理石餐盘,访问的url为:https://s.1688.com/selloffer/offer_search.htm?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&n=y&netType=1%2C11&spm=a260k.635.3262836.d102 通过抓包可以发现实际上每个页面的动态加载通过如下的js文件加载: ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552530583_824631.png) 同时可以看到头部信息为: ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552530839_105546.jpg) 因此我编写了代码来请求此url,想要获取其中的数据 通过分析url,我发现其实只有几个关键的参数在发生作用,我修改了url如下: https://s.1688.com/selloffer/rpc_async_render.jsonp?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&beginPage=2&startIndex=40&templateConfigName=marketOfferresult&async=true&enableAsync=true 将比较关键的参数罗列:keywords,beginpage ,startindex(本页中以0.20.40循环),templateconfigname,async,enableasync 从页面请求的结果如下 https://s.1688.com/selloffer/rpc_async_render.jsonp?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&beginPage=2&startIndex=40&templateConfigName=marketOfferresult&async=true&enableAsync=true ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552531339_315690.jpg) 依据上面的分析我编写了代码: ``` ''' 得到单页商品信息 ''' try: print('正在爬取第%d页' % page) for startindex in range(0, 2): proxy = get_proxy() url = 'https://s.1688.com/selloffer/rpc_async_render.jsonp' data = { 'keywords': KEYWORD, # 搜索关键词, 'beginpage': str(page), # 页数 'templateConfigName': TemplateConfigName, 'startIndex': str(startindex*20), 'async': 'true', 'enableAsync': 'true' } headers = { 'User_Agent': random.choice(USER_AGENT), 'Referer':'https://s.1688.com/selloffer/offer_search.htm?keywords=' + quote( KEYWORD) + '&n=y&netType=1%2C11&spm=a260k.635.3262836.d102&offset=9&filterP4pIds=580281266813,551252714239,554311584303,554434844511,576452898982,567623615791,1264995609,584747673985', 'Cookie': COOKIE, } proxies = {"http": "http://{}".format(proxy)} response = requests.get(url=url, headers=headers, params=data, proxies=proxies, timeout=5) time.sleep(1) if response.status_code == 200: print(response.text) data = response.json() get_info(data=data) except Exception as e: print(e.args) print('出现异常,重新爬取第%d页' % page) return get_one_page(page) ``` ``` 其中请求头是参照抓包的请求头进行了伪装,user_agent使用了随机代理池中的代理。 ip应用了代理池中的代理进行切换, 测试代码发现虽然返回成功,但是内容为空: 测试代码的结果如下: ``` ``` 正在爬取第1页_ ({ "hasError":false, "message":"success", "content":{ "offerResult":{ "html":"" }, "beaconP4Pid":"1552531611011186199615", "tracerId":"1191031861991552531610953000954", "end":0 } }) ``` 很明显服务器判断出来我是机器人,我检查了一下cookies还有ip以及header都没有问题 使用同样的参数在浏览器页面请求也能访问正常的结果,因此我决定增加更多的参数,也许是因为服务器 端验证会检测某个参数是否存在来判断请求来自机器人还是真正的用户,我将代码修改如下: ``` def get_one_page(page): ''' 得到单页商品信息 ''' try: print('正在爬取第%d页' % page) for startindex in range(0, 2): proxy = get_proxy() url = 'https://s.1688.com/selloffer/rpc_async_render.jsonp' data = { 'keywords': KEYWORD, # 搜索关键词, 'beginpage': str(page), # 页数 'templateConfigName': TemplateConfigName, 'startIndex': str(startindex*20), 'async': 'true', 'enableAsync': 'true', 'rpcflag': 'new', '_pageName_': 'market', 'offset': str(9), 'pageSize': str(60), 'asyncCount': str(20), 'n': 'y', 'netType': '1%2C11', 'uniqfield': 'pic_tag_id', 'qrwRedirectEnabled': 'false', 'filterP4pIds': '550656542618%2C554434844511%2C574540124248%2C568185683625%2C567623615791%2C536778930216%2C577066747130%2C555894336804', 'leftP4PIds': '', 'pageOffset': str(3) } headers = { 'User_Agent': random.choice(USER_AGENT), 'Referer':'https://s.1688.com/selloffer/offer_search.htm?keywords=' + quote( KEYWORD) + '&n=y&netType=1%2C11&spm=a260k.635.3262836.d102&offset=9&filterP4pIds=580281266813,551252714239,554311584303,554434844511,576452898982,567623615791,1264995609,584747673985', 'Cookie': COOKIE, } proxies = {"http": "http://{}".format(proxy)} response = requests.get(url=url, headers=headers, params=data, proxies=proxies, timeout=5) time.sleep(1) if response.status_code == 200: print(response.text) data = response.json() get_info(data=data) except Exception as e: print(e.args) print('出现异常,重新爬取第%d页' % page) return get_one_page(page) ``` 测试的结果如下: ``` 正在爬取第1页 ({ "hasError":false, "message":"success", "content":{ "offerResult":{ "html":" \n \n <!-- 为打点计算 offerindex 值-->\n \n \n <!-- 用于异步请求 -->\n \n\n <div id=\"sm-maindata-script\">\n <script type=\"text\/javascript\">\n var coaseParam = {\n \'isCoaseOut\':true\n };\n <\/script>\n <script type=\"text\/javascript\">\n var rightP4P = {\n industryTagPath:\'\',\n leftP4PId:\'\',\n leftP4PLoginId:\'\',\n biaowangId:\'\'\n };\n var rightP4Poffer =[\n ];\n<\/script>\n <\/div>\n \n\n" }, "beaconP4Pid":"1552532048109186199394", "tracerId":"1191031861991552532048084000548", "end":0 } }) ``` 很遗憾结果并不理想,仍旧没有办法获得真正的数据。 我分析了还没有被我列进去的参数,因为无法寻找到其规律所以就没有加上去。 难道1688现在已经做到了,机器人无法爬的地步了吗,到底应该如何解决呢。有没有大神能够指点一下: 另外我同样的测试了一下1688的热销市场,同样的方式,没有问题可以爬取到js的内容,只不过数据是直接封装在json返回值中的,不是通过html代码二次封装。
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
MyBatis研习录(01)——MyBatis概述与入门
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis原本是apache的一个开源项目iBatis, 2010年该项目由apache software foundation 迁移到了google code并改名为MyBatis 。2013年11月MyBatis又迁移到Github。
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
Python爬虫精简步骤1 获取数据
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。 爬虫能做很多事,能做商业分析,也能做生活助手,比如:分析北京近两年二手房成交均价是多少?广州的Python工程师平均薪资是多少?北京哪家餐厅粤菜最好吃?等等。 这是个人利用爬虫所做到的事情,而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。 从搜索巨头到人工...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
web前端javascript+jquery知识点总结
1.Javascript 语法.用途 javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序...
Python:爬取疫情每日数据
前言 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 以全国、湖北和上海为例,分别为以下三个网站: 国家卫健委官网:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml 湖北卫健委官网:http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允许使用这...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升自...
粒子群算法求解物流配送路线问题(python)
1.Matlab实现粒子群算法的程序代码:https://www.cnblogs.com/kexinxin/p/9858664.html matlab代码求解函数最优值:https://blog.csdn.net/zyqblog/article/details/80829043 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/...
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang....
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问