python爬取IMDB电影评论
前⾔
第⼀次写博客,有点⼩激动。
这⼀篇主要是记录⼀下我爬取imdb电影评论的全过程。之前接到了师的任务,要帮她从imdb上爬取电影评论来做情感分析。
正⽂
⽹页分析
分析电影list 的url
获取电影的详情页⾯url以及电影评分
```
ratings_bar = movie.select_one('.ratings-bar')
movie_rate = ratings_bar.select_one('div[name="ir"]')['data-value']
```
获取电影的评论页⾯url
```
movie_reviews_url = "www.imdb/title/"+str(movie_id)+"/reviews?ref_=tt_ov_rt"
```
获取电影所有⾮spoiler的⽤户评论以及⽤户id
有了电影评论页⾯的url,便可以继续对其页⾯进⾏分析,到电影评论所在的位置。
使⽤bs4中的select⽅法和select_one⽅法不断定位获取电影评论,并使⽤正则表达式到⽤户的id:
user_id_pattern = repile(r'(?<=ur)\d+(?=/?)') user_id = int(user_id_pattern.search(user_link).group())#
content = review.select_one('.content') user_review = content.select('.text.show-more__control')
于蓓蓓
由于select⽅法返回的值为整个div标签的内容,因此对于所有评论,我⽤java写了⼀个简单的读写⼩程序处理了⼀下数据,将评论中的
<div>和<br>标签去掉。
<div class="text show-more__control">For anyone who hasn't seen the SyFy original movie, Sharknado; it's a heart-warming, coming of age story about a ragtag group of sharks uprooted from their home by mother nature's fury. The sharks must band together and overcome adversity and strife while trying, desperately, to make their way back to the only home they've ever known. Battling chainsaw wielding humans and B-list actors trying, desperately, to throw themselves into the displaced sharks' mouths every chance they get. If you love sharks and tornadoes, w you don't have to choose! Do yourself a favor and see this one before the Oscars! Sharknado is, truly, the cinematic experience of a lifetime.</div>
电影评论页⾯load more问题
之前写爬⾍的时候这⼀块卡了我⼀段时间,后来⽤selenium库和Chromedriver解决了这个问题。
我总结了⼀下,感觉这种⽅法有以下问题:
1. 每爬取⼀部电影,就需要通过代码完成⼀次打开⼀次关闭Chrome浏览器和多次模拟点击Load More按钮的过程。爬取速度受⽹络条
红包封面免费领取件以及主机性能限制,也是因为这个原因⼀万部电影我分成了四部分来爬;
梦幻西游好玩么2. 在程序的运⾏的整个过程中,笔记本的12g内存始终是占满的。应该是我代码的问题,不过最终还是把电影评论爬完了。
之后会尝试⽤selenium+PhantomJS的⽅法,⽆界⾯的情况下爬取速度应该会快很多。
代码
液晶电视买什么牌子运⾏环境
1. pycharm 2019.3.2
2. python
3.7
3. beautiful soup
乔任梁怎么死的照片4.8.2
4. selenium 3.141.0
团结演讲稿总结
这次⼀共爬取了2010年1⽉1⽇⾄2019年1⽉1⽇期间,imdb⽹站上按投票⼈数降序的前⼀万部电影的⽤户评论,⼀共获得了17,973个影评,主要是前三千部电影的评论多⼀点。
总的来说,代码还是有很多能改进的地⽅,之后有空了会重新优化⼀下。第⼀次写博客,可能有些地⽅说的也不是很详细,如果有疑惑欢迎评论交流!谢谢!
参考资料
1. 关于BeautifulSoup的select和select_one的⽤法可以看这篇⽂章。