2013-02-15 2 views
0

В прошлом, когда я использовал BeautifulSoup и lxml для анализа веб-страниц, это было довольно просто, потому что ссылки все выглядели так: <a href="www.website.com">Website</a>. Тем не менее, я столкнулся с некоторыми веб-страницами, где ссылки отображаются в браузере, но не в источнике страницы.Разбор ссылок, где Javascript генерирует HTML?

К примеру, на this Edmunds.com page, секция Past Long-Term Road Tests выглядит следующим образом:

1991 Acura NSX
2011 Acura TSX Sport Wagon
...


Однако исходный код Past Long Long-Term Road Tests секции the page выглядит следующим образом:

<script type="text/javascript"> 
PAGESETUP.addControl(function() { 
function linksObj(){ 
var elink = "|acura|nsx|1991|long-term-road-test|"; //generates edmunds.com/acura/nsx/1991/long-term-road-test/ 
this.link0 = {anchor:elink,label:"1991 Acura NSX"}; 
var elink = "|acura|tsx-sport-wagon|2011|long-term-road-test|"; //generates edmunds.com/acura/tsx-sport-wagon/1991/long-term-road-test/ 
this.link1 = {anchor:elink,label:"2011 Acura TSX Sport Wagon"}; 
... 
} 
var links_obj = new linksObj(); 
var links_container = document.getElementById('links_list_offpage2'); 
var more_link = ""; 
var more_link_text = ""; 
var elinks = new EDMUNDS.linksList(links_obj, links_container,more_link, more_link_text); 
}, 'low'); 
</script> 

Строка Javascript var elink = "|acura|nsx|1991|long-term-road-test|"; расширена до edmunds.com/acura/nsx/1991/long-term-road-test в браузере.


инструменты, как BeautifulSoup и LXML не находят ссылки, которые генерируются в JavaScript. Как я могу разобрать эти ссылки?

+0

Скопируйте функцию 'EDMUNDS.linkList'. Я думаю –

ответ

2

Используйте headless browser, например ghost.py, чтобы запустить JavaScript JavaScript, и у вас не должно возникнуть проблем с изменением JS-измененного DOM.

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