正则表达式爬取猫眼top100


title : spider with python
date : 2019.1.2
tool : RE & Python



  很早就对爬虫比较感兴趣,当我看到格式化的数据一排排展示在我的眼前的时候,我的内心真的很激动。本科阶段在大学也没好好学习,现在闲暇时间相对较多,重新捡起曾经感兴趣的东西,再拿起来做一做。

首先第一步先亮出自己的软件环境

OS : Linux Ubuntu 18.04

Language : Python 3.6.7

Lib : re, Pool(from multiprocessing), requests

  今天我的分享是使用正则表达式将猫眼电影的top100,全部爬取下来,先使用简单的单进程,然后在使用进程池创建进程,使用多进程的方式完成秒爬数据。

前言:先看看正则表达式的使用方法

  正则表达式,是一种长相稀奇古怪的“语言”,曾经有一句调侃正则表达式的话,是这么说的——“只要一个问题需要使用正则表达式,那么这就是两个问题了”!但是为什么我们现在还要使用这么不尽人意的奇怪东西呢,,真相只有一个,那就是真香啊!!

  但是我们需要注意一点,在我们的Python中,书写正则表达式还是有点不同的。究竟是什么原因导致几乎所有的语言都有内置正则表达式的实现,那么我们接下来探讨一下正则表达式这个妖魔是怎么变成这样子的,——

ABC 12345+d!@#

  对于以上的例子,如果我们需要提取其中的数字出来,使用一般的方法还真是只能一个问题一种操作,这就很马克思主义——具体问题具体分析,但是我们不能这样想问题,如果我们每一个特例都使用不同的解决方法,那这个问题只能说还没解决。直到我们拥有了正则表达式这个有力的武器:正则表达式。实际上,对于以上的问题,只要一行代码:

import re
string = 'ABC 12345+d!@#'

result = re.search('(\d+)', string)
print(result)

  在正则表达式中,我们常用的有以下几个

\d : 数字 「0 - 9」

\w : 字符串str类型的

+ : 重复一次或多次

. : 匹配除开换行符的所有字符

* : 重复零次或多次

? : 可选

 Python正则表达式,是在内置库re中提供的,有几个很好用的方法——

re.match(string[, pos[, endpos]]) # 必须从开头匹配,即需要在模式前添加'^'
re.search(string[, pos[, endpos]]) # 不必从开头匹配,只要匹配就好
re.findall(string[, pos[, endpos]]) # 找出所有的

  有几个原则:

  1. 能用search坚决不用match,因为自由度高一点
  2. 一般使用非贪婪模式,注:*是贪婪模式,?不是贪婪模式

匹配完成之后,我们将感兴趣的东西使用括号包围住,形成一个分组,然后调用group就可以获取它们,group尾数从1开始

例如:

html = '<p class="name"><a href="/films/1203" title
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值