2015-06-27 2 views
1

Я пытаюсь разобрать исходный код этой конкретной веб-страницы: http://www.sns.gov.uk/Reports/Report.aspx?ReportId=1&PostCode=EH1%201HNHTML парсинг с помощью PHP

Дело в том, что, когда я использую этот код:

$url = 'http://www.sns.gov.uk/Reports/Report.aspx?ReportId=1&PostCode=EH1%201HN'; 
$output = file_get_contents($url); 
echo htmlspecialchars($output); 

я получить исходный код от http://www.sns.gov.uk без дополнительной информации, которую я хочу.

У вас есть идея, почему это происходит и возможное решение?

+2

Вы имеете в виду ваши 'file_get_contents()' вызов обеспечивает другой URL, чем то, что вы ожидаете? Тогда, скорее всего, у вас есть какая-то форма сессии. Так что желаемый URL-адрес нельзя вызывать напрямую, но только в контексте некоторого сеанса. – arkascha

+0

, более конкретно, @arkascha, правильным процессом было бы ввести информацию в http://www.sns.gov.uk, а затем будет создана следующая веб-страница, которую я хочу отобразить. Таким образом, URL-адрес не может быть вызван напрямую, как вы писали. В таком случае, что я должен делать? – Marios

+0

Проверьте необработанный HTTP-запрос, особенно заголовок запроса и тело, убедитесь, что файлы cookie, референт, источник и т. Д. Совпадают. – PHPJungle

ответ

0

Использование инструмента (как Fiddler) для захвата HTTP запроса:

GET http://www.sns.gov.uk/Reports/Report.aspx?ReportId=1&PostCode=EH1%201HN HTTP/1.1 
Host: www.sns.gov.uk 
Connection: keep-alive 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36 
Referer: http://www.sns.gov.uk/default.aspx?DisplayMessage=False 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en,zh-CN;q=0.8,zh;q=0.6,zh-TW;q=0.4,ja;q=0.2 
Cookie: ASP.NET_SessionId=yn1jfjwgzhc5eobnskqux1mm; sessionCookie=isConnected=false; UsrSession=UserGUID=7a8e0dc4-4346-437d-ac80-393d8fa4fc8e; GWCensus=SessionGUID={3ab2206e-9e0f-4602-8fb7-972cb1f5338c}; civicAllowCookies=yes; __utmt=1; __utmt_~1=1; __utmt_~2=1; __utma=82977748.1471390697.1435401464.1435401464.1435401464.1; __utmb=82977748.5.10.1435401464; __utmc=82977748; __utmz=82977748.1435401464.1.1.utmcsr=stackoverflow.com|utmccn=(referral)|utmcmd=referral|utmcct=/questions/31087581/html-parsing-using-php 

enter image description here

This picutre exactly shows what you need to build your HTTP Request: 
1.GET method; 
2.Referer; 
3.Cookie (!important) 
+0

см. [HTTP-протокол wiki] (http://www.tutorialspoint.com/http/http_requests.htm) – PHPJungle

+0

Благодарю вас за ваш ответ. Дело в том, что я должен реализовать это в php, чтобы можно было получить данные впоследствии. Но я не знаю, почему. Я предполагаю, что я должен имплицировать определенную функцию, и в параметрах я должен включить 1,2,3, упомянутые выше @PHPJungle – Marios

+0

См. Мой Github [iHttp.php] (https://github.com/phpjungle/iHttp), это мой класс вы можете легко отправить HTTP-запрос и получить ответ сервера. Также он поддерживает прокси-сервер и т. д. – PHPJungle

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