众所周知,网络爬虫的最基本原理就是模拟HTTP协议向指定网站发送请求,从而从服务器端返回的网页源代码中抽取具有实用价值的信息(也可能下一次任务队列的地址)。这中间涉及到很多算法,根据网站不同域名,网站网页更新速度,网站结构深度,设定爬虫不同的爬取策略。爬虫可以从一些简单的网站上直接获取网页源代码,从而对网页源代码进行分析。但是对于一些需要用户登录的网站,要抓取网站当中被保护的数据具有一定的困难。今天要说就是一个从需要登录的网站上获取收保护数据的方法。
按照现实生活中的方法,需要获取这些数据,我们首先需要登录这个网站,然后才能访问这个网站当中受保护的数据。好了,话题回来,我们想想,在服务器端网站是如何记录当前用户是否合法(是否已经登录了呢),很简单撒,session,这个我想是大家肯定都知道的方法了。原理很简单,我们访问一个网站,网站在我们首次访问的时候,会返回一个cookies信息。这个信息相当于我们在这个网站的一个登录信息。我们每次访问该网站的时候需要带上这个cookies信息,以便让该网站很容易的识别我们先前已经登录该网站了。
其实步骤很简单,我们需要访问该网站,获取和这个网站会话的cookies信息。然后带这个这个合法的cookies信息重新登录该网站,登录成功后,会在服务器端产生一个保存用户信息的session。以后我们只需每次访问该网站带上合法的cookies信息,服务器端会根据cookies来判别我们是否是合法用户(当前用户信息是否存在session当中)。如果合法我们就可以顺利获取该受保护的网站内容。
用java来实现一个简单的代码。从指定网站当中获取需要的cookies信息
URL url_con;
HttpURLConnection http_con = null;
try {
url_con = new URL(url);
http_con = (HttpURLConnection) url_con.openConnection();
//构造请求信息,对于安全性稍微高一些的网站,构造此类的请求头信息是必须的,第一次请求不带正确的cookies信息
http_con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)");
http_con.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
http_con.setRequestProperty("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7");
http_con.setRequestProperty("Accept-Language", "zh-cn,zh;q=0.5");
http_con.setRequestProperty("Host", "search.cnipr.com");
http_con.setRequestProperty("Accept-Encoding", "gzip,deflate");
http_con.setRequestProperty("Keep-Alive", "300");
http_con.setRequestProperty("Connection", "keep-alive");
http_con.setRequestProperty("Cookie", "cizi=2");
http_con.setRequestProperty("Referer","http://www.cnipr.com/top_js.htm");
//设置请求方式为get请求
http_con.setDoInput(true);
http_con.setDoOutput(true);
http_con.setRequestMethod("GET");
//建立和服务器之间的连接。
http_con.connect();
String cookieVal = http_con.getHeaderField("Set-Cookie");
//获取服务器端传回的jsessionId(对于使用tomcat内核的服务器一般传回此类值)值
if (cookieVal != null) {
cookiesId = cookieVal.substring(0, cookieVal.indexOf(";"));
}
} catch (Exception e) {
e.printStackTrace();
getCookies() ;
}
很简单,我们获得cookies以后呢,重新登录该网站,当然别忘了在HTTP请求头加上需要的cookies信息啊。就是我们获取的cookiesId。这样就可以顺利登录。以后每次请求都需要带上该ID。这样我们就可以抓取需要的网页信息
分享到:
相关推荐
通过网络爬虫将网络数据爬取下来并进行解析清理,之后对数据进行处理,处理后将关键数据展现给客户
基于Python网络爬虫的设计,可以爬取360新闻,百度贴吧等,百分百可用
JAVA 网络爬虫 已经成功爬取新浪,搜狐,163等,各种网站
网络爬虫-多进程爬取在线课程并存入MySQL数据库-Python源码示例.zip
python爬虫,爬取贴吧python爬虫,爬取贴吧python爬虫,爬取贴吧python爬虫,爬取贴吧python爬虫,爬取贴吧python爬虫,爬取贴吧python爬虫,爬取贴吧python爬虫,爬取贴吧python爬虫,爬取贴吧python爬虫,爬取贴吧...
网络爬虫-如何将爬取的Unicode码转换为中文信息-Python实例源码.zip
基于springboot+mybatis的java网络爬虫,一期爬取bilibili站点的一些视频基本信息
此为python实现的基于网路爬虫的电影评论爬取和分析系统。其中包括源代码、完整文档。本系统主要由热门电影排名、影评内容词云、观众满意度饼图等模块组成。其中代码有bug(我去年可以运行,不知道今年为什么不可了...
知乎爬虫(知乎网站爬取工具,爬取知乎网页内容)。 大家下载试试吧。挺好用的,嘿嘿。
python实现对于整个网页内容的爬取,简单易写,非常适合对python爬虫的学习。
《Python网络爬虫技术案例教程》PPT课件(共10单元)七单元爬取APP和PC客户端数据.pdf《Python网络爬虫技术案例教程》PPT课件(共10单元)七单元爬取APP和PC客户端数据.pdf《Python网络爬虫技术案例教程》PPT课件(共10...
爬取目标网站的文本,如古诗的内容,作者,朝代,并且保存到本地中。 3、爬虫程序 # -*- coding:utf-8 -*- #爬取古诗网站 import requests import re #下载数据 def write_data(data): with open('诗词.txt','a...
利用ruby技术实现网络爬虫爬取Ajax
使用qt实现网络爬虫,爬取自己感兴趣的图片。原理是采集地址,然后存数据,再去下载。
爬取Microsoft Bing上的10类花卉数据集,没有统一尺寸数据量较大,分两批次。
该资源是python实现网络爬虫 爬取北上广深的天气数据的报告 注:可用于期末大作业实验报告
pel脚本爬虫程序,支持爬取 dfe day imdbpel脚本爬虫程序,支持爬取 dfe day imdb
知识领域: 数据爬取、数据分析、Python编程技术关键词: Python、网络爬虫、数据抓取、数据处理内容关键词: 豆瓣电影、排行榜、数据提取、数据分析用途: 提供一个Python编写的爬虫工具,用于抓取豆瓣电影TOP250的...