import re
# res = re.findall(r"\d+","今天hb100元,买了2个雪糕") #拿到的是列表,['100', '2']# result = re.search(r"\d+","今天hb100元,买了2个雪糕") #拿到的是match对象,<re.Match object; span=(4, 7), match='100'># # search只拿到第一个结果# print(result.group())#就可以看到匹配结果,100# result = re.finditer(r"\d+","今天hb100元,买了2个雪糕")#把所有的结果放到迭代器里面,比较节省内存资源# for i in result:# print(i)#得到match对象# print(i.group())#得到匹配的字符##预加载,使得正则和字符串分开# obj = re.compile(r"\d+")## res = obj.findall("今天hb100元,买了2个雪糕")# print(res)#['100', '2']
s =""" <div class="abc"> <div><a href="baidu.com">我是百度</a></div> <div><a href="qq.com">我是腾讯</a></div> <div><a href=""163.com">我是网易</a></div> </div> """
obj=re.compile(r'<div><a href="(?P<url>.*?)">(?P<name>.*?)</a></div>')#实现分组(?P<url>.*?)
res = obj.finditer(s)for i in res:print(i.group("url"),i.group("name"))print(i.groupdict())#得到一个字典
示例:爬取豆瓣top250的所有电影名称
import re
import requests
account=0defgetTop250(no):
url ="https://movie.douban.com/top250?start="+str(25*(no-1))
header={
'User-Agent':'Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.188 Safari/537.36 CrKey/1.54.250320'}
resp = requests.get(url,headers=header)#处理小反爬,伪装请求头# print(resp.text)#得到页面源代码#中间过滤掉一些东西使得符合正则
obj = re.compile(r'<div class="item">.*?<span class="title">'r'(?P<mname>.*?)</span>',re.S)#加一个参数re.S表示"."能匹配换行符了
res=obj.finditer(resp.text)#strip()函数可以去掉左右两边的空格、换行符、制表符等空白
mnamelist=[]global account
for i in res:print(i.groupdict().get("mname"))
mnamelist.append(i.groupdict().get("mname"))
account=account+1return mnamelist
num=0withopen("top250MoveName.txt",'w')as f:for i inrange(1,11):for mn in getTop250(i):
num=num+1
f.write(str(num)+":"+(mn+"\n"))print(i)print(account)
文章评论