0

过去,当我使用 BeautifulSoup 和 lxml 来解析网页时,这非常容易,因为链接看起来都是这样的:<a href="www.website.com">Website</a>. 但是,我遇到了一些网页,其中链接出现在浏览器中,但没有出现在页面源中。

例如,在此 Edmunds.com 页面上,该Past Long-Term Road Tests部分如下所示:

1991 Acura NSX
2011 Acura TSX Sport Wagon
...


但是,页面Past Long Long-Term Road Tests部分的源代码如下所示:

<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 中生成的链接。如何解析这些链接?

4

1 回答 1

2

使用诸如ghost.py之类的无头浏览器来运行页面的 JavaScript,您应该可以毫无问题地抓取 JS 更改的 DOM。

于 2013-02-15T05:58:52.120 回答