2013-10-24 4 views
-3

Я пытаюсь получить исходный код HTML из Интернета. Я пробовал, делая этоКак получить исходный код из Интернета?

u = new URL(url); 
URLConnection con = u.openConnection(); 
con.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"); 
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); 
StringBuilder a = new StringBuilder(); 
while ((line=in.readLine())!=null){ 
    a.append(line); 
} 
in.close(); 
contWeb = a.toString(); 

Но когда я выполняю этот код это HTML код, который я получаю

<head> 
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> 
<meta http-equiv="cache-control" content="max-age=0" /> 
<meta http-equiv="cache-control" content="no-cache" /> 
<meta http-equiv="expires" content="0" /> 
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> 
<meta http-equiv="pragma" content="no-cache" /> 
<meta http-equiv="refresh" content="10; url=/distil_r_blocked.html?Ref=/windfarms/durrazzo-albania-al01.html" /> 
<script type="text/javascript" src="/ga.233033467223.js?PID=14CDB9B4-DE01-3FAA-AFF5-65BC2F771745" defer></script> 
<style type="text/css">#d__fFH{position:absolute;top:-5000px;left:-5000px}#d__fF{font-family:serif;font-size:200px;visibility:hidden}#collective57bfda9e,#friendshipeadab1a4,#degrees85b85925,#friendshipeadab1a4{display:none!important}</style></head> 
<body> 
<div id="distil_ident_block">&nbsp;</div> 
<div style="display: none;"> 
<a href="BangJensen32676optimal.html" id="friendshipeadab1a4" rel="file">reserved</a> 
</div> 
<div id="d__fFH"><OBJECT id="d_dlg" CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0px" height="0px"></OBJECT> 
<span id="d__fF"></span> 
</div> 
</body> 
</html> 

Но когда я вижу HTML код с Mozilla Firefox (с помощью Ctrl + U) код, который я вижу, это совсем другое

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head><link id="ctl00_Link1" href="js/jquery/skin.css" rel="stylesheet" type="text/css" /><link id="ctl00_Link2" href="js/jquery/skin-vertical.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="http://forensics1000.com/js/15075.js" async="async"></script> 
<script type="text/javascript" src="js/jquery/jquery.js" ></script> 
<script type="text/javascript" src="js/jquery/jquery.jcarousel.min.js" ></script> 
<div id="blq-local-nav"> 
<ul id="nav2"> 
<li id="ctl00_liWindfarms" class="first-child selected"><a href="./">Offshore Wind Farms</a></li> 
<li id="ctl00_liVessels"><a href="vessels.aspx" id="ctl00_A3">Vessels</a></li> 
<li id="ctl00_liTurbines"><a href="turbines.aspx" id="ctl00_A4">Turbines</a></li> 
<li id="ctl00_liFoundations"><a href="support-structures-for-offshore-wind-turbines-aid268.html" id="ctl00_Afoundations">Foundations</a></li> 
<li id="ctl00_liNews"><a href="windfarmsNews.aspx" id="ctl00_A5">News</a></li> 
<li id="ctl00_liMarketAnalysis"><a href="marketReports.aspx" id="ctl00_A6">Reports <span class="new">(new)</span></a></li> 
     <li id="ctl00_liDownloads"><a href="subscribers/downloads.aspx" id="ctl00_A7"><span class='subs'>Downloads</span></a></li> 

     <li id="ctl00_liEquipment"><a href="equipmentFinder.aspx">Equipment</a></li> 
     <li id="ctl00_liPorts"><a href="ports.aspx">Ports</a></li> 
     <li id="ctl00_liContactUs"><a href="contact.aspx">Contact</a></li> 
     <li id="ctl00_liAdvertise"><a href="request.aspx?id=advertise">Advertise</a></li> 

     <li style="float:right;" > 

      <a id="ctl00_LoginStatus1" href="javascript:__doPostBack('ctl00$LoginStatus1$ctl02','')">Login</a> 
     </li> 

     <li id="ctl00_liSubscribe" onclick="pageTracker._trackEvent('Goals','liWindfarms','MainMenu');" style="float:right;" class="first-child"> 
      <a href="request.aspx?id=owfdb" id="ctl00_A2">Subscribe</a> 
     </li> 
    </ul> 
    <ul id="ctl00_subnav"> 

    <li class=" first-child"><a href="windfarms.aspx">Project Database</a></li><li><a href="subscribers/owfdb/pipeline.aspx"><span class='subs'>Timeline Chart</span></a></li><li><a href="converters.aspx">Converters</a></li><li><a href="substations.aspx">Substations</a></li><li><a href="../offshorewind">Global Map</a></li><li><a href="widget.aspx">Maps For Your Website</a></li><li><a href="windspeeds.aspx">Wind Speeds</a></li><li><a href="powerdata.aspx">Power Data</a></li></ul> 
</div>           

HTML-код все еще идет, но это слишком большой, чтобы вставить его здесь. Кто-нибудь знает, как я могу получить реальный контент в Интернете? и почему это происходит? Я совсем потерялся

+1

Что вы ожидаете увидеть? –

+0

Является ли ошибка ОБЪЕКТОМ или что ожидается? – Dave

+0

Источник, который возвращается, является источником HTML. Если вы ищете фактический исходный код, это недоступно. – ediblecode

ответ

0

Курсор ввода потока находится в начале тела, я не знаю, что это можно получить с этим парнем или нет, но вам может понадобиться дать руку Socket, что-то как этот

Socket s=new Socket("176.12.59.8",80); 
s.getOutputStream().write("GET /index.html?param=value HTTP/1.1\r\n".getBytes()); 
s.getOutputStream().write("User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\r\n".getBytes()); 
//send other header requests, cookie, etc... 
s.getOutputStream().write("\r\n".getBytes()); 
s.getOutputStream().flush(); 
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); 
StringBuilder a = new StringBuilder(); 
while ((line=in.readLine())!=null){ 
    a.append(line); 
} 

задача (жесткая работа) с сокетом, что с гнездом вы просто подключить к адресу и определенному порту, а остальная работа принадлежит к вам (об отправке и получения данных).

Это низкоуровневый подход.

EDIT: Рассмотрим открытие http://google.com/, первое, что с Socket вам нужно только указать путь назначения и порт, который вы пытаетесь открыть, затем с помощью входного потока отправить данные для того, чтобы клиент и сервер понимают друг друга, здесь протокол HTTP/1.1.

google ip is 74.125.228.41
Теперь попробуйте следующий код.

import java.io.BufferedReader; 

импорт java.io.InputStreamReader; импорт java.net.Socket;

общественный класс Носок {

public static void main(String[] args)throws Exception { 
    String line=null; 
    Socket s=new Socket("74.125.228.41",80); 
    s.getOutputStream().write("GET/HTTP/1.1\r\n".getBytes());//requesting the root 
    s.getOutputStream().write("User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2\r\n".getBytes()); 
    //send other header requests, cookie, etc... 
    s.getOutputStream().write("\r\n".getBytes()); 
    s.getOutputStream().flush(); 
    BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); 
    StringBuilder a = new StringBuilder(); 
    while ((line=in.readLine())!=null){ 
     System.out.println(line); 
    } 

    } 

} 

вы отправляете

GET/HTTP/1.1 
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 

и из положить

HTTP/1.0 200 OK 
Date: Fri, 25 Oct 2013 08:14:44 GMT 
Expires: -1 
Cache-Control: private, max-age=0 
Content-Type: text/html; charset=UTF-8 
Set-Cookie: NID=67=cnvAQD2mzWXzNmbkv40u0Fjqh-hfhbbBsqbgHmNbzvdxkUWEcNGbzeva56UYuuNfSzVgKeM0AwH8_yfesWA4mpdOLKTVYyPzJrlhrn7be1HWVMMxU-QSUQGfbR6N_OKQ; expires=Sat, 26-Apr-2014 08:14:44 GMT; path=/; domain=.; HttpOnly 
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info." 
Server: gws 
X-XSS-Protection: 1; mode=block 
X-Frame-Options: SAMEORIGIN 
Alternate-Protocol: 80:quic 
X-Cache: MISS from pouyanazm_appliance 
X-Loop-Control: 37.191.91.249 57B724E7913CDA261C464198106FF67D 
Connection: close 

<html>.....html content is here....</html> 

URLConnection делает все выше вещь (SEND-данные, как HTTP) для вы, но он не возвращает вам данные заголовка, просто тело. у вас есть 3 варианта использования Socket (вам нужно реализовать http) или переопределить URLCOnnection, чтобы получить данные заголовка или использовать третий. что я не знаю даже одного, вы можете его искать.

+0

Спасибо за ваш совет, но я совсем потерялся со всеми заголовками, которые необходимы для прошения. Не могли бы вы немного объяснить, как получить HTML-код сайта с сокетами? –

+0

вам нужно изучить HTTP/1.1 протокол чувак. затем реализуйте его через 'Socket', есть много заголовков в HTTP/1.1, и каждый из них используется для конкретного требования, поэтому я должен знать, что вы пытаетесь сделать !? сначала начните с HTTP/1.1 –

+0

ОК, еще одно, чтобы записать в мой список дел. Я пытаюсь получить HTML-код веб-сайта, чтобы получить информацию, которую я хочу с этого веб-сайта. –

0

Вы не можете взглянуть на исходный код, если вы не говорите о взломе систем. ;-) Код, который вы видите, - это HTML-код, который может быть 1: 1 с исходным кодом, но вы не видите никаких скриптов PHP, классов J2EE и т. Д. Я боюсь.

+0

Извините за недоразумение, но я говорил о коде HTML, а не о PHP или Javascripts или вообще о –

+0

Итак, у вас есть исходный код. Что вы ожидали увидеть? Ваш код делает то, что вам нужно. – FazoM

+0

У меня в результате к моему коду некоторые HTML, что это не фактический код сайта –

0

Мы можем получить контент от входного URL-адреса (например, что вы делали в своей программе). Я попытался получить контент, используя ваш код для его работы. Можете ли вы попробовать прочитать контент из какого-либо другого URL-адреса, если вы можете получить контент, тогда вам нужно проанализировать URL-адрес, который не дает контент. Ваш сценарий отладки должен быть таким, как это

1. Проверьте, загружен ли контент с помощью ajax. 2. Они блокируют анонимного пользователя. 3.Контакт может быть застегнут.

+1

Я пробовал с другим сайтом, и, как вы сказали, он работает отлично. Я предполагаю, что веб-сайт не позволяет автоматически получать исходный код ... –

3

На сайте установлен механизм защиты содержимого. Вы должны полностью воспроизвести поведение браузера (включая файлы cookie, refferer и т. Д.), Чтобы получить страницу.

Смежные вопросы