我正在尝试使用beautifulsoup
从gamespot上的网页抓取数据。但是,结果与我从page source viewer
获得的结果非常不同。首先,产生了很多errors
。例如,我们有
r = requests.get(link)
soup = bs4.BeautifulSoup(r.text)
然而soup.title
给出了
<title>404: Not Found - GameSpot</title>
。
我实际想要刮去的数据甚至都没有出现。是因为网页旁边包含javascript
吗?如果是这样我怎么能解决这个问题?
答案 0 :(得分: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')
将显示动态生成的内容,而不是您看到的静态内容。
答案 1 :(得分:0)
您的连接错误是:socket.error:[Errno 54]通过对等方重置连接 第一次连接到http://www.gamespot.com时 你必须抓住cookie并将其用于响应标题中的其他页面。