我想知道是否可以显示隐藏标签的值。即时通讯使用urllib和beautifulsoup但我似乎无法得到我想要的东西。
使用的html代码如下:(保存为 hiddentry.html )
<html>
<head>
<script type="text/javascript">
//change hidden elem value
function changeValue()
{
document.getElementById('hiddenElem').value = 'hello matey!';
}
//this will verify if i have successfully changed the hiddenElem's value
function printHidden()
{
document.getElementById('displayHere').innerHTML = document.getElementById('hiddenElem').value;
}
</script>
</head>
<body>
<div id="hiddenDiv" style="position: absolute; left: -1500px">
<!--i want to find the value of this element right here-->
<span id="hiddenElem"></span>
</div>
<span id="displayHere"></span>
<script type="text/javascript">
changeValue();
printHidden();
</script>
</body>
</html>
我想要打印的是id hiddenElem 的元素的值。 要做到这一点,我尝试使用urllib和beautifulsoup组合。我使用的代码是:
from BeautifulSoup import BeautifulSoup
import urllib2
import urllib
mysite = urllib.urlopen("http://localhost/hiddentry.html")
soup = BeautifulSoup(mysite)
print soup.prettify()
print '\n\n'
areUthere = soup.find(id="hiddenElem").find(text=True)
print areUthere
我获得的输出虽然是无。 有任何想法吗?是我想要实现的甚至可能吗?
答案 0 :(得分:2)
beautifulsoup解析它从服务器获取的html。如果你想看到生成的值,你需要以某种方式在页面上执行嵌入式javascript,然后再将字符串传递给beautifulsoup。运行javascript后,您将修改后的DOM html传递给beautifulsoup。
就浏览器仿真而言:
使用浏览器模拟,你应该能够下拉基础HTML,运行浏览器模拟来执行javascript,然后使用修改后的DOM HTML并将其插入到beautifulsoup中。