beautifulsoup findAll使用div标签生成null

时间:2016-12-12 09:06:25

标签: html python-2.7 beautifulsoup

我正在尝试从以下链接中删除评论: https://www.kickstarter.com/projects/175927790/tupi-2d-animation-software-for-everyone/comments

使用代码:

urlcomments = url +str("/comments")
htmlcomments=urllib2.urlopen(urlcomments).read()                
commentsoup=BeautifulSoup(htmlcomments, "html.parser")
commentable = soup.findAll('section',attrs={"class_":"js-could-have-comments js-project-comments-content js-project-content project-content"})

我已经尝试了urllib和urllib2,但它们都没有工作,findAll的结果是[]。 此外,我在html中尝试了不同的标签,div与类不兼容。

这段代码是课程的一部分,所以如果有人需要更多信息,请告诉我。 任何建议都会有所帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

问题是如果你想在findall中使用关键词args,你需要使用class_,但是当你使用attr={}时,不需要使用额外的' _&# 39;在班级的尾巴。'班级'是字典中的关键。所以只需将代码更改为:

commentable = soup.findAll('section',attrs={"class":"js-could-have-comments js-project-comments-content js-project-content project-content"})

除此之外,此页面由javascript呈现,因此,您无法通过urllib或请求获取javascript部分,我建议使用selenium。

  

搜索具有特定CSS类的标记非常有用,但是   CSS属性的名称“class”是Python中的保留字。   使用class作为关键字参数会给出语法错误。作为   美丽的汤4.1.2,你可以使用关键字搜索CSS类   参数类_:

soup.find_all("a", class_="sister")
soup.find_all("a", attrs={"class": "sister"})

BeautifulSoup Doc