利用正则表达式爬取豆瓣电影排名

  • 一/正则表达式
  • 二/用正则表达式爬取豆瓣top250

一/正则表达式

很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。

一、校验数字的表达式

  1. 数字:1*$

  2. n位的数字:^\d{n}$

  3. 至少n位的数字:^\d{n,}$

  4. m-n位的数字:^\d{m,n}$

  5. 零和非零开头的数字:^(0|[1-9][0-9]*)$

  6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

  7. 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$

  8. 正数、负数、和小数:^(-|+)?\d+(.\d+)?$

  9. 有两位小数的正实数:2+(.[0-9]{2})?$

  10. 有1~3位小数的正实数:3+(.[0-9]{1,3})?$

  11. 非零的正整数:4\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$

  12. 非零的负整数:^-[1-9][]0-9"$ 或 ^-[1-9]\d$

  13. 非负整数:^\d+$ 或 5\d*|0$

  14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

  15. 非负浮点数:^\d+(.\d+)?$ 或 6\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$

  16. 非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$

  17. 正浮点数:7\d*.\d*|0.\d*[1-9]\d*$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$

  18. 负浮点数:^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$

  19. 浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$

二、校验字符的表达式

  1. 汉字:8{0,}$

  2. 英文和数字:9+$ 或 10{4,40}$

  3. 长度为3-20的所有字符:^.{3,20}$

  4. 由26个英文字母组成的字符串:11+$

  5. 由26个大写英文字母组成的字符串:12+$

  6. 由26个小写英文字母组成的字符串:13+$

  7. 由数字和26个英文字母组成的字符串:14+$

  8. 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

  9. 中文、英文、数字包括下划线:15+$

  10. 中文、英文、数字但不包括下划线等符号:16+$ 或 17{2,20}$

  11. 可以输入含有^%&’,;=?KaTeX parse error: Can't use function '\"' in math mode at position 1: \̲"̲等字符:[^%&',;=?\x22]+ 12 禁止输入含有的字符:[^\x22]+

三、特殊需求表达式

  1. Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$

  2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

  3. InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$

  4. 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

  5. 电话号码(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXX”、“XXX-XXXXXXXX”、"XXXXXXX"和"XXXXXXXX):^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$

  6. 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

  7. 身份证号(15位、18位数字):^\d{15}|\d{18}$

  8. 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

  9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):18[a-zA-Z0-9_]{4,15}$

  10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):19\w{5,17}$

  11. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$

  12. 日期格式:^\d{4}-\d{1,2}-\d{1,2}

  13. 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$

  14. 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

  15. 钱的输入格式:

  16. 1.有四种钱的表示形式我们可以接受:“10000.00” 和 “10,000.00”, 和没有 “分” 的 “10000” 和 “10,000”:20[0-9]*$

  17. 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$

  18. 3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$

  19. 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:21+(.[0-9]+)?$

  20. 5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 “10” 和 “10.2” 是通过的:22+(.[0-9]{2})?$

  21. 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:23+(.[0-9]{1,2})?$

  22. 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:24{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

23 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

  1. 备注:这就是最终结果了,别忘了"+“可以用”*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里

  2. xml文件:^([a-zA-Z]±?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$

  3. 中文字符的正则表达式:[\u4e00-\u9fa5]

  4. 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

  5. 空白行的正则表达式:\n\s*\r (可以用来删除空白行)

  6. HTML标记的正则表达式:<(\S*?)[^>]>.?</\1>|<.*? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)

  7. 首尾空白字符的正则表达式:^\s*|\s*KaTeX parse error: Expected group after '^' at position 3: 或(^̲\s*)|(\s*) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

  8. 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)

  9. 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)

  10. IP地址:\d+.\d+.\d+.\d+ (提取IP地址时有用)

  11. IP地址:((???:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))

二/用正则表达式爬取豆瓣top250

import requests
import redef get_douban(number):headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'}res= requests.get('https://movie.douban.com/top250?start='+number+'&filter=',headers=headers)if res.status_code == 200:return res.textelse:return Nonedef parse_html(html):# pattern = re.compile(('<em class="">(.*?)</em>.*?<span class="title">(.*?)</span>'), re.S)pattern = re.compile(('<li>.*?em class="">(.*?)</em>.*?class="title">(.*?)</span>.*?<p class="">(.*?)<br>(.*?)</p>.*?class="rating_num" property="v:average">(.*?)</span>.*?</li>'),re.S)items = re.findall(pattern,html)print('items',items)# print(html)def main():for i in range(10):html = get_douban(str(i*25))parse_html(html)if __name__ == '__main__':main()

原文:http://www.cnblogs.com/zxin/archive/2013/01/26/2877765.html


  1. 0-9 ↩︎

  2. 0-9 ↩︎

  3. 0-9 ↩︎

  4. 1-9 ↩︎

  5. 1-9 ↩︎

  6. 1-9 ↩︎

  7. 1-9 ↩︎

  8. \u4e00-\u9fa5 ↩︎

  9. A-Za-z0-9 ↩︎

  10. A-Za-z0-9 ↩︎

  11. A-Za-z ↩︎

  12. A-Z ↩︎

  13. a-z ↩︎

  14. A-Za-z0-9 ↩︎

  15. \u4E00-\u9FA5A-Za-z0-9_ ↩︎

  16. \u4E00-\u9FA5A-Za-z0-9 ↩︎

  17. \u4E00-\u9FA5A-Za-z0-9 ↩︎

  18. a-zA-Z ↩︎

  19. a-zA-Z ↩︎

  20. 1-9 ↩︎

  21. 0-9 ↩︎

  22. 0-9 ↩︎

  23. 0-9 ↩︎

  24. 0-9 ↩︎

利用正则表达式爬取豆瓣电影排名相关推荐

  1. Python网络爬虫:利用正则表达式爬取豆瓣电影top250排行前10页电影信息

    在学习了几个常用的爬取包方法后,转入爬取实战. 爬取豆瓣电影早已是练习爬取的常用方式了,网上各种代码也已经很多了,我可能现在还在做这个都太土了,不过没事,毕竟我也才刚入门-- 这次我还是利用正则表达式 ...

  2. 利用python爬取豆瓣电影top250

    利用python爬取豆瓣电影top250: 注:本内容只是作为个人学习记录 1.业务分析 进入网页https://movie.douban.com/top250 可以看见每部电影都呈现在眼前,点击电影 ...

  3. python爬虫(一)爬取豆瓣电影排名前50名电影的信息

    python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...

  4. python 爬取豆瓣电影排名

    python 爬取豆瓣电影排名 任务要求 获取豆瓣电影排名前250信息 打包进文件夹 代码展示 代码如下 import requests#导入requests库 import redef GetHtm ...

  5. 第一次练手爬取豆瓣电影排名top250

    从b站看了如何爬取豆瓣电影top250的视频,就是跟着练习实现了,就把代码贴了一下. from bs4 import BeautifulSoup #网页解析,获取数据 import re #正则表达式 ...

  6. 爬取豆瓣电影排名前250部电影并且存入Mongo数据库

    2019独角兽企业重金招聘Python工程师标准>>> 需求:爬取豆瓣电影top250(https://movie.douban.com/top250)的电影数据: 标题(title ...

  7. BeautifulSoup爬取豆瓣电影排名

    豆瓣电影排名网址:https://movie.douban.com/top250?start=0&filter= 在进去豆瓣电影排名后,打开浏览器的检查功能分析爬取页面源代码,在写请求代码之前 ...

  8. 利用正则表达式爬取猫眼电影TOP100信息

    本文利用requests库和正则表达式爬取了猫眼电影TOP100电影信息,并将电影封面和标题.主演等文字信息保存在了本地.本文完整代码链接:https://github.com/iapcoder/Ma ...

  9. python——利用正则表达式爬取豆瓣读书中的图书信息

    本来可以使用一条正则表达式完成图书信息的爬取,结果发现在CPU性能较差的电脑上进行爬取时耗时非常长,几乎无法将结果获取到.所以,将大的html源码先经过一次简单的匹配以获取到一个中间结果,然后再从中间 ...

最新文章

  1. PostgreSQL第一步:安装
  2. 仿照jquery的方式实现的tabs和focus
  3. 为什么说新型冠状病毒疫苗会研制成功?
  4. Qt-QTableWidget设置只能选中一行
  5. VTK修炼之道31:图像二值化_阈值法
  6. php三表关联,详解Yii2 hasOne(), hasMany()实现三表关联的两种方法
  7. LevelDB 源码剖析(九)DBImpl模块:Open、Get、Put、Delete、Write
  8. HTML 文件在PC移动端完美自适应布局的技巧
  9. JS实现星星评分功能实例代码(两种方法)
  10. ajax原生为什么else会执行2次,关于Ajax,明明传过去的值是1,可不知道为什么就是else起作用?...
  11. 2018-2019-2 20165303《网络对抗技术》Exp2 后门原理与实践
  12. 作为参数给后端为空_后端 API 接口文档 Swagger 使用指南
  13. 20200208(补):翻转游戏Ⅰ Ⅱ(leetcode)
  14. 什么是冷区热区_火灾热区冷区
  15. MySQL中的四种Key
  16. 通过调用rundll32.exe来打开一些系统特定文件
  17. node对接微信支付 sdk tenpay
  18. 浏览器火狐3.0发布之盛况
  19. 小马哥----高仿苹果6S A235刷机拆机图与开机界面图 真八核6735芯片 精仿系列机
  20. fancyhdr页眉页脚设计史上最全代码

热门文章

  1. .如果一个HTML文档内含有阿拉伯文,则应该
  2. Jena Fuseki启动时 Failed to bind to 0.0.0.0/0.0.0.0:3030 解决办法 —— 修改启动时的端口号
  3. 微信会偷看聊天记录吗?张小龙万字演讲回应一切!新表情、输入法、直播拜年都要来了!信息量太大(附全文)...
  4. 常见的 GC 算法介绍(Parallel/CMS/G1):温故而知新
  5. Spring源码-执行流程
  6. 关于Windows7 64位 SP1 系统装不了 NET Framework 4.6
  7. HotSpot-多维属性的kpi异常定位(根因分析)
  8. 校园网网络未识别或网络连接正常,但无法认证客户端
  9. 88se9125 88se9230的驱动初始化有什么差异吗
  10. 博主已开启评论精选什么意思_小红书怎么入驻怎么开店小红书如何入驻开店需要什么...