Почему не работает file_get_contents?
Есть. Используйте cURL.upd. На самом деле очень мало сайтов сейчас просто могут отдать контент страницы без контекста. Как минимум им нужны всякие куки, юзерагенты и так далее. Теоретически можно и в file_get_content передать контекст запроса, но в cURL с этим справляется лучше и проще.
Парсить лучше через https://github.com/Imangazaliev/DiDOM там можно получить страницу по http. Если нужно больше функциональность при работе с http - https://github.com/guzzle/guzzle