公众号版网站建设,wordpress php 文件上传,建筑 企业官网设计,山东集团网站建设 中企动力《复仇者联盟4#xff1a;终局之战》已经上映快三个星期了#xff0c;全球票房破24亿美元#xff0c;国内票房破40亿人民币。虽然现在热度逐渐下降#xff0c;但是我们还是恬不知耻地来蹭一蹭热度。上映伊始《复联4》的豆瓣评分曾破了9分。后来持续走低#xff0c;现在《复… 《复仇者联盟4终局之战》已经上映快三个星期了全球票房破24亿美元国内票房破40亿人民币。虽然现在热度逐渐下降但是我们还是恬不知耻地来蹭一蹭热度。上映伊始《复联4》的豆瓣评分曾破了9分。后来持续走低现在《复联4》的评分稳定在8.6分。虽然豆瓣日常被人吐槽注水严重恶意评分很多但是由于它好爬鸭~我们还是选择豆瓣作为爬取对象。豆瓣的长评论有文字和图片等其它元素简单起见这次只爬短评。 在浏览器中查看豆瓣关于复联4的短评先来看看url的结构https://movie.douban.com/subject/26100958/comments?start20limit20sortnew_scorestatusP可见我们可以通过修改start的值进入不同的页面右键查看源代码可以看到浏览器获取到的html页面代码。Ctrl F搜索第一条影评的关键词快速定位到影评的标签可以看到影评内容在span标签中class为“short”。总览一下爬取内容的步骤1) 访问url获取html页面文本这一步我们要用到的是requests模块。2) 解析返回的文本提取出爬虫内容这一步要用的是beautifulSoup模块。这两个模块都可以通过pip直接下载。首先是main函数def main(): discuss [] a 0 for i in range(0,100,20): url https://movie.douban.com/subject/26100958/comments?start str(i) limit20sortnew_scorestatusP HTMLpage getHTML(url) #print(HTMLpage) for t in parseHTML(HTMLpage): discuss.append(t) for i in discuss: print(str(a) : i)# print(i) a a 1由于豆瓣一页显示20条影评我们爬前100条所以这里访问了前5个页面:def getHTML(url): try: r requests.get(url) r.raise_for_status()print(get html successfully) r.encoding utf-8 #print(r.text) return r.text except: return 在getHTML函数中我们申请访问目标页面并返回html页面文本。注意这里应该将编码方式设置为utf-8实测如果设置成r.encoding r.apparent_encoding程序并不能猜测到正确的编码方式。当r.raise_for_status() 没有抛出异常时程序通知我们获取html成功。如果有异常返回空字符串。下一步是解析如前所述影评是class为short的span所以可以直接使用bs4的find_all()函数得到一个含有所有影评的tag的列表。我们只需要把tag中的文字提取出来就可以返回到主函数了。首先要生成一个beautifulSoup类的对象使用html的解析器。html页面是树状分布的可以通过各种树的遍历找到我们需要的标签这里bs4提供了一个简单粗暴的find_all可以直接使用。find_all()函数返回的是一个保存着tag的列表。def parseHTML(html): try: soup BeautifulSoup(html,html.parser) A soup.find_all(span,attrs {class:short}) B [] for i in A: B.append(i.get_text()) return B except: return []用get_text函数去掉span标签只留下内容的文本加入到B列表里。然后就可以返回了。同理如果出错了返回空列表。好了以上就是一个非常简单的小爬虫通过修改爬取的数量可以爬取任意页面的评论。当然了后续还会对这些数据进行一些有趣的分析请关注我们。同时因为作者本人能力有限本系列可能又要无限托更了/呲牙下附完整版代码和运行结果【代码下载移步留言区】import requestsfrom bs4 import BeautifulSoupdef getHTML(url): try: r requests.get(url) r.raise_for_status() print(get html successfully) r.encoding utf-8 #print(r.text) return r.text except: return def parseHTML(html): try: soup BeautifulSoup(html,html.parser) A soup.find_all(span,attrs {class:short}) B [] for i in A: B.append(i.get_text()) return B except: return []def main(): discuss [] a 0 for i in range(0,100,20): url https://movie.douban.com/subject/26100958/comments?start str(i) limit20sortnew_scorestatusP HTMLpage getHTML(url) #print(HTMLpage) for t in parseHTML(HTMLpage): discuss.append(t) for i in discuss: print(str(a) : i)# print(i) a a 1 if __name__ __main__:main()运行结果注本文作者来自小编一同学。他的公众号木白瞎说。大家可以关注一下。扫码入QQ群获取更多的运筹优化算法及人工智能算法学习资料↓↓↓注微信群请在公众号菜单点击资源下载-微信粉丝群获取最新群邀请链接。