2015-07-11 72 views
0

我试图使用beautifulsoupgamespot的网页上刮去数据。但是,结果与我从page source viewer得到的结果大不相同。首先,生产了很多errors。举例来说,我们有美丽的汤汁输出错误

r = requests.get(link) 

soup = bs4.BeautifulSoup(r.text) 

然而soup.title

<title>404: Not Found - GameSpot</title> .

其实我是想凑甚至不出现数据。是否因为网页包含javascript?如果是的话,我该如何解决这个问题?

+0

它可能会阻止/重定向你认为你是一个bot:你可能必须设置你的用户代理。 –

回答

0

你的连接错误是:socket.error:[错误54]通过对 连接复位当你第一次连接到http://www.gamespot.com 你必须赶上饼干,并用它在响应的头部其他页面。

1

您只向服务器发送HTTP请求。你需要处理Javascript来获取内容。

带有Javascript支持的无头浏览器,如Ghost,它会是一个不错的选择。

from ghost import Ghost 

ghost = Ghost() 

ghost.open(link) 
page, resources = ghost.evaluate('document.documentElement.innerHTML;') 
soup = BeautifulSoup(page) 

.evaluate('document.documentElement.innerHTML')将显示动态生成的内容,而不是你会看到考虑看看源的静态。

+0

显然,鬼没有打开的属性?我安装在http://ghostpy.readthedocs.org/en/latest/#examples这里显示的依赖关系上,但ghost.open()不可用。 – Aerole

+0

它有。 您需要先安装pyqt4。你有这里的二进制文件:http://www.riverbankcomputing.co.uk/software/pyqt/download 然后'pip安装ghost.py'。不仅'鬼' –