我们假设在公司或家里使用网络爬虫去抓取自己索要的一些数据的时候,经常对方的站点有defence机制,会给你的http请求返回500错误,仅仅要是同样IP就请求不到数据,这时候我们仅仅能去重新启动路由器,这样IP地址会改变,网络爬虫就能正常工作了

以下是通过发送Socket请求来模拟路由器的重新启动指令:

protected void rebotadsl() {try {BufferedOutputStream sender = null;String url = baseURL;URL target = new URL(url);InetAddress address = InetAddress.getByName(target.getHost());Socket client = new Socket(address, 8080);sender = new BufferedOutputStream(client.getOutputStream());String str = "";String cmd = "GET "+ "/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1"+ " HTTP/1.0\r\n" + "User-Agent: myselfHttp/1.0\r\n"+ "Accept: www/source; text/html; image/gif; */*\r\n"+ "Authorization: Basic" + " " + luyou + "\r\n"+ "\r\n"; //luyou填写路由器的password,如YWRtaW46d2FuZzIwMDU=sender.write(cmd.getBytes(), 0, cmd.length());sender.flush();System.out.println("因为重定向路由器断线了");} catch (Exception ex) {ex.printStackTrace();}}

当然了,我们得写一个算法来使用这个函数,如两次重新启动路由器时间不能太短

java下载图片:

/***发送图片信息到server下载图片,应用ISO8859-1 */public void sendPic(String url,String story,String name){setURL(url);HttpClient http = new HttpClient();http.getHttpConnectionManager().getParams().setConnectionTimeout(100000);   GetMethod get=null;try{get = new GetMethod(url);}catch(IllegalArgumentException ex){Log.logException("url带有不规则字符", ex);setStatus(baseURL, ERROR);_body.setLength(0);return;}get.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,100000);      get.setFollowRedirects(false);  int er = 0;try{get.addRequestHeader("user-agent",useragent);er = http.executeMethod(get);System.out.println("server return code"+er);}catch(Exception ex){System.out.println("发送图片url到server訪问失败");try{Thread.sleep(120000);}catch(InterruptedException e){}try {er = http.executeMethod(get);} catch (Exception e) {System.out.println("连不上server,系统将推出");System.exit(0);}}if (er == 200) {InputStream is = null;//读取从server传过来的页面数据try {is = get.getResponseBodyAsStream();} catch (Exception e) {System.out.println("读取server内容响应时错误发生");}byte buffer[] = new byte[20480];byte tbuf[] = new byte[204800];StringBuffer bf = new StringBuffer();try {int tl=0;while (true) {int l = is.read(buffer);if (l < 0 || l+tl>204800)break;for(int jj=0;jj<l;jj++)tbuf[tl+jj]=buffer[jj];tl+=l;}bf.append(new String(tbuf, 0, tl, "ISO8859-1"));_body.setLength(0);_body.append(bf.toString());}catch(IOException ex){System.out.println("将server的数据转换成String时错误发生");}}//end if(er == 200)//下载图片到硬盘上File outputfile = new File(story,name);try{FileOutputStream fos = new FileOutputStream(outputfile);fos.write(_body.toString().getBytes("ISO8859-1"));fos.close();}catch(IOException ex){System.out.println("IO存本地错误发生");}}// 返回true表示该url在数据库中已存在public boolean URLisExist(String url) {ResultSet rs = null;boolean b = true;int count = 0;try {_prepGetCount.setString(1, url);rs = _prepGetCount.executeQuery();rs.next();count = rs.getInt("qty");} catch (Exception ex) {System.out.println("URLisExist错误发生");try {if (rs != null) {rs.close();}} catch (Exception e1) {System.out.println("rs关闭时错误发生");}}if (count < 1)b = false;return b;}

java假设模拟请求重新启动路由器(网络爬虫经常使用),还有java怎样下载图片相关推荐

  1. python 网络爬虫爬取落网 期刊内容 下载图片 音乐

    1.实现方案    1.1 采用多进程创建多个爬虫对象 爬虫对象主要由获取网页内容,分析网页内容,下载图片,下载音乐 这四个线程组成    1.2 进程及线程数根据网络情况设置    1.3 图片保存 ...

  2. 网络爬虫讲解(附java实现的实例)

    luojinping的专栏 目录视图 摘要视图 订阅 CSDN日报20170219--<程序员的沟通之痛>      [技术直播]揭开人工智能神秘的面纱        程序员1月书讯    ...

  3. Java HttpURLConnection模拟请求Rest接口解决中文乱码问题

    Java HttpURLConnection模拟请求Rest接口解决中文乱码问题 参考文章: (1)Java HttpURLConnection模拟请求Rest接口解决中文乱码问题 (2)https: ...

  4. [day2]python网络爬虫实战:爬取美女写真图片(增强版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  5. [day4]python网络爬虫实战:爬取美女写真图片(Scrapy版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.Scrapy简介 4. ...

  6. python3爬虫爬取百度贴吧下载图片

    python3爬虫爬取百度贴吧下载图片 学习爬虫时没事做的小练习. 百度对爬虫还是很友好的,在爬取内容方面还是较为容易. 可以方便各位读者去百度贴吧一键下载每个楼主的图片,至于是什么类型的图片,就看你 ...

  7. 第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签...

    第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象 ...

  8. 网络爬虫(2)-- Java爬虫框架

    2019独角兽企业重金招聘Python工程师标准>>> Nutch Nutch属于分布式爬虫,爬虫使用分布式,主要是解决两个问题:1)海量URL管理:2)网速.如果要做搜索引擎,Nu ...

  9. 基于HttpClient4.0的网络爬虫基本框架(Java实现)

    上个学期做了很久的新浪爬虫,修修改改一直没时间做个整理,趁着开学前,重新整理了下思路和代码结构,做一个总结吧. 本来是雄心壮志的想实现一个Java版本的.比较通用的爬虫框架的,但是整理后又发现此法真的 ...

最新文章

  1. 抛弃Anchor box和NMS,目标检测新范式开源:Sparse R-CNN
  2. JS 动态添加 onload、onresize、onscroll 事件
  3. Html/CSS博文目录
  4. WinAPI: PolyBezier - 绘制贝塞尔线
  5. index.html文件作用,MEAN JS – 主要的html文件(index.html)位于何处
  6. DCMTK:将hardcopy硬拷贝特征曲线文件转换为softcopy软拷贝格式
  7. 自己动手写UI库——引入ExtJs(布局)
  8. 【学习记录】Sql中存储过程的
  9. java如何快速抛出异常,异常 - 如何抛出异常 - 《Java 编程要点(Essential Java)》 - 书栈网 · BookStack...
  10. python列表字典的区别_python列表和字典区别
  11. 几点忠告送给在科研道路艰难跋涉的自己
  12. python语言程序设计实践教程上海交通大学出版社的答案_高等教育出版社出版社c语言程序设计实践教程习题参考答案...
  13. C语言成绩管理分析系统
  14. three.js视频教程2022最新
  15. 剪贴板是计算机系统,剪贴板在哪里,手把手教你如何打开电脑剪贴板
  16. 帅某---FPGA---黑金
  17. git使用时报错:fatal: unable to access ‘xxx‘ : Failed to connect to github.com port 443 after: 【Time out】
  18. 【BZOJ4027】【HEOI2015】兔子与樱花 贪心
  19. 学习matlab(六)——微分和积分
  20. HBuilderX 终端显示空白问题

热门文章

  1. 查看windows系统信息
  2. CentOS7的初始配置
  3. JS打开摄像头并截图上传
  4. Intellij IDEA 14.x 菜单项中Compile、Make和Build的区别
  5. perl统计http日志ip
  6. IOS多线程管理1关于多线程你必须知道的二三事
  7. flex mx:TabNavigator进行选项卡切换,需要进行交互时。发生Error #1009错误
  8. apache ab 压测
  9. 【WP8】Uri关联启动第三方App
  10. Windows server 2008 iis7 下配置PHP+MySql