Python瓦匠系列 —— 爬虫小实验
项目一 从豆瓣上面找出一本你感兴趣的书,抓取它的某一页短评,并计算其总分。
目标网页:https://book.douban.com/subject/27188298/comments/
第一步:使用requests库和BeautifulSoup对目标网页进行解析。
import requests from bs4 import BeautifulSoup import re sum = 0 i = 1 #使用text属性,提取文本内容。 r = requests.get('https://book.douban.com/subject/27188298/comments/').text html = BeautifulSoup(r,'lxml') #find_all方法找到p标签下的所有 comment-content。 bsObj = html.find_all('p','comment-content') for item in bsObj: print(str(i).ljust(3) + item.string + '\n') #给评论加上序号并进行分行。 i += 1 #python并支持i++这种整数自增语法。
运行的结果如下:
1 李维嘛,清新治愈,一年一本,创造力真是惊人 2 很暖心的一部小说。本来以为苏珊是女主,读完之后才知道玛丽才是真正的女主。我喜欢这个懂得爱的女主,她的放手是一种欲擒故纵,健康的依恋关系,真是美好的爱情 和婚姻生活啊。 《你在哪里》很容易读,相当的温心。 3 故事的前半段真的看得非常揪心,等一个人的感觉太苦,但后来的情节有了反转,挺出乎意料的。 4 ... 18 画面感很强,拍成电视剧应该很好看。不怪时间,是我们误会了对方在心里的位置。苏菲的价值寄托在拯救别人身上,当别人对他有一丝一毫的动摇,他就崩溃了,爱自己才能够爱别人。菲利普与苏菲的世界都是各自不想放手自己的生活,又不想辜负梦想中爱情的样子。不要考验爱情,更不要失去自我。看完感触很多,希望你也有不同的收获。 19 这世上总有一个地方,让无处安放的灵魂找到栖息之所 20 喜欢马克李维的书,这本也很暖心!
第二步:计算总分
我们需要使用re正则表达式模块。
我们在使用浏览器审查网页源码时可以看到这样一行:
<span class="user-stars allstar40 rating" title="推荐"> 其中40 就是我们想要的分数。
要想匹配这种模式"字符串()字符串",常用的方法:(.*?)
例如本例:user-stars allstar(.*?) rating"
当然我们还需要更加深入的去学习正则表达式。
pattern_s = re.compile('<span class="user-stars allstar(.*?) rating"') p = re.findall(pattern_s,r) for star in p: sum += int(star) print(sum)
最后整合一下代码,看一下运行结果:
import requests from bs4 import BeautifulSoup import re sum = 0 i = 1 #使用text属性,提取文本内容。 r = requests.get('https://book.douban.com/subject/27188298/comments/').text html = BeautifulSoup(r,'lxml') #find_all方法找到p标签下的所有 comment-content。 bsObj = html.find_all('p','comment-content') for item in bsObj: print(str(i).ljust(3) + item.string + '\n') #给评论加上序号并进行分行。 i += 1 #python并支持i++这种整数自增语法。 #抓取评论分数并计算总和。 pattern_s = re.compile('<span class="user-stars allstar(.*?) rating"') p = re.findall(pattern_s,r) for star in p: sum += int(star) print(sum)
结果:
1 李维嘛,清新治愈,一年一本,创造力真是惊人 2 很暖心的一部小说。本来以为苏珊是女主,读完之后才知道玛丽才是真正的女主。我喜欢这个懂得爱的女主,她的放手是一种欲擒故纵,健康的依恋关系,真是美好的爱情 和婚姻生活啊。 《你在哪里》很容易读,相当的温心。 3 故事的前半段真的看得非常揪心,等一个人的感觉太苦,但后来的情节有了反转,挺出乎意料的。 4 ... 18 画面感很强,拍成电视剧应该很好看。不怪时间,是我们误会了对方在心里的位置。苏菲的价值寄托在拯救别人身上,当别人对他有一丝一毫的动摇,他就崩溃了,爱自己才能够爱别人。菲利普与苏菲的世界都是各自不想放手自己的生活,又不想辜负梦想中爱情的样子。不要考验爱情,更不要失去自我。看完感触很多,希望你也有不同的收获。 19 这世上总有一个地方,让无处安放的灵魂找到栖息之所 20 喜欢马克李维的书,这本也很暖心! 900