2015-10-19 56 views
0

我想从这个页面读取信息的实际的HTML:http://movie.douban.com/subject/20645098/commentsPython中的urlopen和httplib的都是无法返回页面

,并使用以下方法来找到所有评论的项目。

comment_item = soup.find_all("div", {"id":"comment"}) 

但是,我无法得到任何返回的内容,我意识到我的脚本正在阅读的html与实际页面上的html不同。以下是我所尝试过的。

我第一次尝试使用BeautifulSoup做到以下几点:

comment_html = urlopen(section_url).read() 
soup = BeautifulSoup(comment_html, "html.parser") 

这汤的回报是不一样的实际HTML代码的HTML。然后我尝试httplib2请求如下:

h = httplib2.Http() 
resp, content = h.request(section_url, "GET") 
soup = BeautifulSoup(content, "html.parser") 

而且它仍然是一样的。 :(

+0

你应该添加您是从浏览器发送的所有HTTP请求头在Python您的HTTP请求..这应该解决问题 –

+1

你认为什么是“实际的html”?如果网站让你变得沉重然后DOM可以完全不同于通过简单的GET请求获得的基本HTML。 – rkrzr

+0

@rkrzr我正在寻找用户在网页上看到的主要内容。例如,我无法在返回的html中找到带注释的div作为id。 – YAL

回答

1

这里是一个工作示例:

import requests 
import BeautifulSoup as BeautifulSoup 

url = 'http://movie.douban.com/subject/20645098/comments' 
resp = requests.get(url) 
b = BeautifulSoup(resp.text) 
comments = b.findAll('div', {'class': 'comment'}) 

print comments 

我用请求库在这里,我会强烈建议您使用为好,但它无关,与你的问题,这些问题你代码是错误的方法名(find_all),并要寻找一个class而不是一个id

+0

该死的,我正准备回答非常类似的代码:D –

+0

非常感谢你! :D Wow Stackoverflow是最好的,我没想到得到的回应如此之快!多谢你们! – YAL

+0

@rkrzr:出于某种原因,您的代码适用于本文中的链接,但是,它不适用于其他链接,如下所示:http://movie.douban.com/subject/2303845/comments任何想法为什么是这样? – YAL