我正在使用漂亮的汤写一个页面刮板,并注意到它有时会尝试解析页面,即使它没有完全加载。
我正在做的是这样的事情:
soup = BeautifulSoup(urllib.urlopen(page))
我对Python不是很了解,但我认为必须有一种方法让我知道页面已经完成加载,所以我可以开始废弃它。
我之所以知道它没有等到它全部加载,是因为脚本大部分时间都会工作,但是会在其他时候出错,说我在页面上寻找的元素不存在(但是)
有人能帮我一把吗?
答案 0 :(得分:2)
您尝试加载的页面中是否有可能存在JavaScript?这可能会阻止它完全加载 - 如果它只是一个普通的静态网页.urlopen()
应该做得很好......如果JavaScript确实是问题你可以尝试像PyQt4一样加载页面然后提取HTML,或者使用像Selenium或Windmill这样的浏览器。
答案 1 :(得分:2)
尝试将所有内容都读成字符串:
html = urllib.urlopen(page).read()
soup = BeautifulSoup(html)
虽然BS文档说传递一个打开的文件对象很好,但尝试这样做是个好主意。
如果它仍然失败,则意味着它根本与BS无关。在这种情况下,print html
可以看到您收到的内容。也许只是因为你从python脚本或类似的东西访问它时没有登录到网站。