用正则表达式抓取豆瓣数据

Posted 怪兽宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用正则表达式抓取豆瓣数据相关的知识,希望对你有一定的参考价值。

用正则表达式简单爬取豆瓣数据

爬取豆瓣电影这一页的数据:

首先我们查看此网页的源代码:
点击鼠标右键,点击查看网页源代码,显示如下图:

用正则表达式抓取豆瓣数据

在网页源代码中,我们可以找到这样的数据:

用正则表达式抓取豆瓣数据


用正则表达式抓取豆瓣数据

我们要做的,就是把网页源代码中这样的数据用正则表达式匹配出来。

要抓取网页源代码中的数据,需要做以下几步:

  • 抓取出网页源代码的文本

  • 用正则表达式将需要的信息在网页源代码中匹配出来

  • 将匹配出来的信息显示出来


  • 对于抓取出网页源代码的文本,我们可以用requests模块获取网页的源代码

    import requests
    import re
    content = requests.get('https://movie.douban.com/').text
  • 然后,我们根据查看到的网页的源代码来编写正则表达式语法
    我们在网页源中找到这样的源代码

    <li class="ui-slide-item s" data-dstat-areaid=70_1 data-dstat-mode=click,expose data-dstat-watch=.ui-slide-content  data-dstat-viewport=.screening-bd data-title="猩球崛起3:终极之战 War for the Planet of the Apes" data-release="2017"  data-rate="7.1" data-star="35" data-trailer="https://movie.douban.com/subject/25808075/trailer" data-ticket="https://movie.douban.com/subject/25808075/cinema/" data-duration="140分钟" data-region="美国" data-director="马特·里夫斯" data-actors="安迪·瑟金斯 / 伍迪·哈里森 / 史蒂夫·茨恩" data-intro="" data-enough="true" data-rater="62812">

    编写正则表达式

    pattern = re.compile('<li.*?data-title="(.*?)".*?data-release="(.*?)".*?data-actors="(.*?)".*?data-rate="(.*?)".*?>', re.S)

    re.compile 引用re模块中的compile函数,表示匹配所有符合此正则表达式的数据。<li 代表我们要找的网页源代码的开头,.*?代表<lidata-title中的任意字符, data-title="(.*?)"代表我们要找的数据,其余以此类推, >代表匹配到这个字符就结束。 re.S表示要匹配的文本中有换行符

  • 输入匹配到的数据

    results = re.findall(pattern, content)
    for result in results:
      title, time,actors,rate = result
      print(title, time,actors, rate)

综合:

import requests
import re
content = requests.get('https://movie.douban.com/').text
pattern = re.compile('<li.*?data-title="(.*?)".*?data-release="(.*?)".*?data-actors="(.*?)".*?data-rate="(.*?)".*?>', re.S)
results = re.findall(pattern, content)
for result in results:
    title, time,actors,rate = result
    print(title, time,actors, rate)

猩球崛起3:终极之战 War for the Planet of the Apes 2017 安迪·瑟金斯 / 伍迪·哈里森 / 史蒂夫·茨恩 7.3
羞羞的铁拳 2017 艾伦 / 马丽 / 沈腾 8.7
英伦对决 The Foreigner 2017 成龙 / 皮尔斯·布鲁斯南 / 刘涛
蜘蛛侠:英雄归来 Spider-Man: Homecoming 2017 汤姆·霍兰德 / 小罗伯特·唐尼 / 玛丽莎·托梅
追龙 追龍 2017 甄子丹 / 刘德华 / 姜皓文
敦刻尔克 Dunkirk 2017 菲恩·怀特海德 / 汤姆·格林-卡尼 / 杰克·劳登 5.7
战狼2 2017 吴京 / 弗兰克·格里罗 / 吴刚
捍卫者 2017 白恩 / 吕星辰 / 赫子铭 7.2
天梯:蔡国强的艺术 2016 蔡国强 / 蔡文悠 / 蔡文浩
理查大冒险 Richard the Stork 2017 尼科莱特·克雷比茨 / Marc / Jason 7.4
星际特工:千星之城 Valérian and the City of a Thousand Planets 2017 戴恩·德哈恩 / 卡拉·迪瓦伊 / 克里夫·欧文
钢铁飞龙之再见奥特曼 2017 侯勇 / 大张伟 / 金晨 8.6
大闹天宫 2012 李扬 / 陈凯歌 / 陈道明 6.9
建军大业 2017 刘烨 / 朱亚文 / 黄志忠 8.2
纯洁心灵·逐梦演艺圈 2015 朱哲健 / 李彦漫 / 陈思瀚
杀破狼·贪狼 殺破狼‧貪狼 2017 古天乐 / 吴樾 / 托尼·贾 7.5
初恋时光 2017 黄又南 / 邓紫衣 / 叶山豪
心理罪 2017 廖凡 / 李易峰 / 万茜 7.7
诡域新娘 2017 陈圆 / 奇凌 / 郑文杰 7.2
魔都爱之十二星座 2017 李梓溪 / 孙立洋 / 马璐
黑白迷宫 2017 任达华 / 陈小春 / 伍允龙 8.8
闪光少女 2017 徐璐 / 彭昱畅 / 刘泳希 3.1
初恋日记 初戀日記:賤男蜜擾 2017 王敏奕 / 马志威 / 符龙飞 6.3
血战湘江 2017 王霙 / 徐箭 / 董勇


我们还可以用正则表达式抓取其他数据,比如:豆瓣电影250

import requests
import re
content = requests.get('https://movie.douban.com/top250').text

pattern = re.compile('<li>.*?<a href="(.*?)".*?<img alt="(.*?)".*?src', re.S)
results = re.findall(pattern, content)
for result in results:
    url, name = result
    print(url, name)

/#more 肖申克的救赎
https://movie.douban.com/subject/1291546/ 霸王别姬
https://movie.douban.com/subject/1295644/ 这个杀手不太冷
https://movie.douban.com/subject/1292720/ 阿甘正传
https://movie.douban.com/subject/1292063/ 美丽人生
https://movie.douban.com/subject/1291561/ 千与千寻
https://movie.douban.com/subject/1295124/ 辛德勒的名单
https://movie.douban.com/subject/1292722/ 泰坦尼克号
https://movie.douban.com/subject/3541415/ 盗梦空间
https://movie.douban.com/subject/2131459/ 机器人总动员
https://movie.douban.com/subject/1292001/ 海上钢琴师
https://movie.douban.com/subject/3793023/ 三傻大闹宝莱坞
https://movie.douban.com/subject/3011091/ 忠犬八公的故事
https://movie.douban.com/subject/1291549/ 放牛班的春天
https://movie.douban.com/subject/1292213/ 大话西游之大圣娶亲
https://movie.douban.com/subject/1291560/ 龙猫
https://movie.douban.com/subject/1291841/ 教父
https://movie.douban.com/subject/1292064/ 楚门的世界
https://movie.douban.com/subject/1300267/ 乱世佳人
https://movie.douban.com/subject/1291828/ 天堂电影院
https://movie.douban.com/subject/6786002/ 触不可及
https://movie.douban.com/subject/1849031/ 当幸福来敲门
https://movie.douban.com/subject/5912992/ 熔炉
https://movie.douban.com/subject/1307914/ 无间道
https://movie.douban.com/subject/1292000/ 搏击俱乐部


或豆瓣读书

import requests
import re
content = requests.get('https://book.douban.com/').text
pattern = re.compile('<li.*?cover.*?href="(.*?)".*?title="(.*?)".*?more-meta.*?author">(.*?)</span>.*?year">(.*?)</span>.*?</li>', re.S)

results = re.findall(pattern, content)
for result in results:
    url, name, author, date = result
    author = re.sub('\s', '', author)
    date = re.sub('\s', '', date)
    print(url, name, author, date)

https://book.douban.com/subject/27077201/?icn=index-editionrecommend 警察 [挪]尤·奈斯博 2017-8
https://book.douban.com/subject/27113372/?icn=index-editionrecommend 父亲的失乐园 [美]阿里埃勒·萨巴尔 2017-9
https://book.douban.com/subject/27118153/?icn=index-editionrecommend 找对梯子,没有你够不到的人生 Juan 2017-9
https://book.douban.com/subject/27115194/?icn=index-editionrecommend 中国手艺人 白英 2017-8-1
https://book.douban.com/subject/27072866/?icn=index-editionrecommend 亚历山大·麦昆:野性之美 [英]安德鲁·博尔顿 2017-10
https://book.douban.com/subject/26939977/?icn=index-latestbook-subject 事故 [阿尔巴尼亚]伊斯梅尔·卡达莱 2017-8
https://book.douban.com/subject/27127066/?icn=index-latestbook-subject 知中·了不起的宋版书 罗威尔 / 主编 2017-8
https://book.douban.com/subject/27124852/?icn=index-latestbook-subject 我循着火光而来 张悦然 2017-10
https://book.douban.com/subject/27120282/?icn=index-latestbook-subject 寻路阿富汗 [英]罗瑞·斯图尔特 2017-8
https://book.douban.com/subject/27077157/?icn=index-latestbook-subject 好人宋没用 任晓雯 2017-8-1
https://book.douban.com/subject/27085085/?icn=index-latestbook-subject 知觉的悬置 [美]乔纳森·克拉里 2017-9
https://book.douban.com/subject/27123241/?icn=index-latestbook-subject 深情史 刘丽朵 2017-9
https://book.douban.com/subject/26688765/?icn=index-latestbook-subject 论巴赫 [德]阿尔伯特·施韦泽 2017-9-1
https://book.douban.com/subject/27103796/?icn=index-latestbook-subject 恋爱的犀牛 廖一梅 2017-8
https://book.douban.com/subject/27098403/?icn=index-latestbook-subject 这幅画还可以看这里 [日]宫下规久朗 2017-8
https://book.douban.com/subject/27118271/?icn=index-latestbook-subject 今夜宜有彩虹 陆烨华 2017-10
https://book.douban.com/subject/27118642/?icn=index-latestbook-subject 和纸之美 [日]柳宗悦 2017-9
https://book.douban.com/subject/27101592/?icn=index-latestbook-subject 我认识了一个索马里海盗 邓安庆 2017-9
https://book.douban.com/subject/27045312/?icn=index-latestbook-subject 腹地的构建 [美]彭慕兰 2017-8
https://book.douban.com/subject/27079479/?icn=index-latestbook-subject 南方高速 [阿根廷]胡利奥·科塔萨尔 2017-10
https://book.douban.com/subject/26989966/?icn=index-latestbook-subject 暗蚀 [德]保罗·策兰 2017-8
https://book.douban.com/subject/27064053/?icn=index-latestbook-subject 一月物语 [日]平野启一郎 2017-8-1
https://book.douban.com/subject/27088215/?icn=index-latestbook-subject 自我成长的力量 丛非从 2017-9-1
https://book.douban.com/subject/27046176/?icn=index-latestbook-subject 东镇女巫 [美]约翰·厄普代克 2017-8
https://book.douban.com/subject/27091427/?icn=index-latestbook-subject 樱桃的滋味:阿巴斯谈电影 [伊朗]阿巴斯·基阿鲁斯达米 2017-9
https://book.douban.com/subject/27098887/?icn=index-latestbook-subject 沙丘2:沙丘救世主 [美]弗兰克·赫伯特 2017-8
https://book.douban.com/subject/27089521/?icn=index-latestbook-subject 中东死生门 周轶君 2017-8-1
https://book.douban.com/subject/27031873/?icn=index-latestbook-subject 戏年 葛亮 2017-8
https://book.douban.com/subject/27102845/?icn=index-latestbook-subject 最寒冷的冬天 [美]大卫·哈伯斯塔姆 2017-8-1
https://book.douban.com/subject/27109754/?icn=index-latestbook-subject 赫拉巴尔之书 [匈]艾斯特哈兹·彼得 2017-8
https://book.douban.com/subject/27120179/?icn=index-latestbook-subject 小丑,马戏团的眼泪 陆支羽 2017-9
https://book.douban.com/subject/27077140/?icn=index-latestbook-subject 奇点遗民 [美]刘宇昆 2017-9-1
https://book.douban.com/subject/27087303/?icn=index-latestbook-subject 如何拍电影 [法]克劳德·夏布罗尔 / [法]弗朗索瓦·盖里夫 2017-8
https://book.douban.com/subject/27119165/?icn=index-latestbook-subject 春天大概需要你 暗号 2017-8
https://book.douban.com/subject/27093039/?icn=index-latestbook-subject 私语书(插图珍藏版) 黎戈 2017-8-1
https://book.douban.com/subject/27063789/?icn=index-latestbook-subject 女神 [日]三岛由纪夫 2017-8
https://book.douban.com/subject/27121668/?icn=index-latestbook-subject 从A到Z:当代艺术关键词 《frieze》杂志 2017-9-1
https://book.douban.com/subject/27120011/?icn=index-latestbook-subject 我希望自己足够渺小 拾穗人 2017-8
https://book.douban.com/subject/27068380/?icn=index-latestbook-subject 重要的是音乐 [英]詹姆斯·罗兹 2017-8
https://book.douban.com/subject/27103716/?icn=index-latestbook-subject 今夜必有暴雪 鳄鱼姐 2017-9-1
https://www.douban.com/note/635568967/ 无证之罪 紫金陈 2014-2-1
https://read.douban.com/ebook/39766537/?dcs=book-hot&dcm=douban&dct=read-subject 我循着火光而来 张悦然 2017-10
https://read.douban.com/ebook/39585658/?dcs=book-hot&dcm=douban&dct=read-subject 哦!爸爸 [日]伊坂幸太郎 2016-11
https://read.douban.com/ebook/36902142/?dcs=book-hot&dcm=douban&dct=read-subject 这不是告别 [美]蓝波·罗威 2017-7
https://read.douban.com/ebook/35843367/?dcs=book-hot&dcm=douban&dct=read-subject 咖啡未冷前 [日]川口俊和 2017-6
https://read.douban.com/ebook/37765178/?dcs=book-hot&dcm=douban&dct=read-subject 没有女人的男人们 [美]欧内斯特·海明威 2015-1-1
https://read.douban.com/ebook/39578826/?dcs=book-hot&dcm=douban&dct=read-subject 陶潜和樱子 刘争争 2017-10
https://read.douban.com/ebook/4891486/?dcs=book-hot&dcm=douban&dct=read-subject 第十一根手指 秦明 2014-6
https://read.douban.com/ebook/695532/?dcs=book-hot&dcm=douban&dct=read-subject 自深深处 [英]奥斯卡·王尔德 2015-10
https://read.douban.com/ebook/8809476/?dcs=book-hot&dcm=douban&dct=read-subject 何所冬暖,何所夏凉 顾西爵 2015-1

以上是关于用正则表达式抓取豆瓣数据的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫编程思想(87):项目实战--抓取豆瓣电影排行榜

Python爬虫编程思想(86):项目实战--抓取豆瓣音乐排行榜

Python爬虫编程思想(86):项目实战--抓取豆瓣音乐排行榜

Python正则匹配抓取豆瓣电影链接和评论代码分享

正则表达式的常见用法-读取豆瓣图书信息

1-1 用Python抓取豆瓣及IMDB上的电影信息