2016-04-05 3 views
-1

Я пытаюсь получить html www.soccerway.com. В частности, это:Scrape html with js

enter image description here

, которые имеют label-wrapper класс я также попытался с: select.nav-select, но я не могу получить любую информацию. То, что я сделал это:

1) Создан PHP поданного под названием grabber.php, этот файл имеет следующий код:

<?php echo file_get_contents($_GET['url']); ?> 

2) Создан index.html файл с таким содержанием:

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
    <meta charset=utf-8 /> 
    <title>test</title> 
</head> 
<body> 

<div id="response"></div> 

</body> 

<script> 
    $(function(){ 
     var contentURI= 'http://soccerway.com';  
     $('#response').load('grabber.php?url='+ encodeURIComponent(contentURI) + ' #label-wrapper'); 
    }); 
    var LI = document.querySelectorAll(".list li"); 
    var result = {}; 

    for(var i=0; i<LI.length; i++){ 
     var el = LI[i]; 
     var elData = el.dataset.value; 
     if(elData) result[el.innerHTML] = elData; // Only if element has data-value attr 
    } 

    console.log(result); 
</script> 

</html> 

в div нет содержимого grabbed, я проверил мой код js для получения всей ссылки и работы, но я вставил html-страницу manually.

+1

Ваш код потенциально очень опасен. 'grabber.php? url =/a/path/on/your/server/to/something/very/secret' не будет весело. – ceejayoz

+0

@RoryMcCrossan Перечитайте вопрос. Они проксируют запрос через сервер, избегая проблем с одинаковым происхождением. – ceejayoz

+0

@ceejayoz хорошо пятнистый. Моя ошибка –

ответ

2

Я вижу здесь пару вопросов.

var contentURI= 'http:/soccerway.com #label-wrapper'; 

Вы пропустили второй слэш в http://, и вы передаете URL с пробелом и ID в file_get_contents. Вы хотите вместо этого:

var contentURI = 'http://soccerway.com/'; 

, а затем вам нужно разобрать деталь вас интересует из результирующего HTML.

В #label-wrapper потребности быть в JQuery load() вызова, а не file_get_contents, а переменная contentURI должна быть правильно отделался encodeURIComponent:

$('#response').load('grabber.php?url='+ encodeURIComponent(contentURI) + ' #label-wrapper'); 

Ваш код также содержит массивную уязвимость, что это потенциально очень так как он позволяет любому пользователю получить доступ к grabber.php с url значением, которое является местоположением файла на вашем сервере. Это может скомпрометировать ваш пароль базы данных или другие конфиденциальные данные на сервере.

+0

Я исправлю в примере, все еще не работая , – Dillinger

+0

@ Dillinger Я обновил, но ** вам нужно начать отладку. Консоль вашего браузера, скорее всего, содержит сообщения об ошибках, которые намекают на проблемы. Вы отправили ужасный код, который не мог работать по разным причинам - вам нужно понять, что он делает. – ceejayoz

+0

На вкладке 'network' я вижу только:' object {} ', который является результатом:' console.log (result); 'Я обновляю вопрос с помощью кода обновления. +1 за помощь. – Dillinger