返回

Python爬虫-第三章-3-利用re模块爬取某网电影排行榜

发布时间:2023-05-04 02:58:51 253
# html# python# 数据# 信息
# Demo Describe:数据解析 re部分

import re
import requests
import csv
from fake_useragent import UserAgent

# start--------1,re-正则表达式----------------------
'''
正则表达式
https://www.runoob.com/regexp/regexp-metachar.html

贪婪匹配:.*
惰性匹配:.*?

案例:
str:
米老鼠
米奇
1.re:<.*>
输出:
米老鼠
米奇
2.re:<.*?>
输出:
 




3.re:
.*?

输出:
米老鼠

'''

# end--------1,re-正则表达式----------------------

# start--------2,re模块----------------------

str = '电话1:10086;电话2:10010'
'''
1.findall(re,str)
找出符合正则的结果
2.finditer(re,str)
找出符合正则的结果的迭代器
3.search(re,str)
全文匹配到一个结果就返回该结果的Match
4.match(re,str)
从头匹配到一个结果就返回该结果的Match
5.compile
正则预加载
6.(?Pre) 常用-从正则结果中提取需要的内容 (重要)
比如 (?P.*?)

'''
# 1
lst = re.findall(r'\d+', str)
# print(lst) # ['1', '10086', '2', '10010']

# 2
'''
1
10086
2
10010
'''
lst2 = re.finditer(r'\d+', str)
for i in lst2:
pass
# print(i.group())

# 3
lst3 = re.search(r'\d+', str)
# print(lst3.group()) # 1
# 4
lst4 = re.match(r'\d+', '2008年北京!')
# print(lst4.group()) # 2008
# 5
reRule = re.compile(r'\d+')
lst5 = reRule.match('2008年北京!')
# print(lst5.group()) # 2008
# 6
strHtml = '''




'''
obj = re.compile(r'
r'(?P.*?)'
r'

(?P.*?)

', re.S)
ret = obj.finditer(strHtml)
for i in ret:
pass
# print(i.group('InterIP'))
# print(i.group('InterName'))
# print(i.group('InterInfo'))
''' 输出结果
http://book.douban.com/
豆瓣读书
记录你读过的、想读和正在读的书,顺便打分,添加标签及个人附注,写评论
http://music.douban.com/
豆瓣音乐
豆瓣FM客户端 让好音乐继续 豆瓣音乐人客户端 发现当下最酷的独立音
http://movie.douban.com/
豆瓣电影
豆瓣电影提供最新的电影介绍及评论包括上映影片的影讯查询及购票服务。你
http://beijing.douban.com/
豆瓣同城
豆瓣同城-北京 北京 同城活动 主办方 舞台剧 北京 上海 广州 武

'''

# end--------2,re模块----------------------

# start--------3,练习,爬取豆瓣电影排行----------------------
'''
1,拿到页面源代码
2,通过re提取信息
排行前250电影名称,年份,评价人数,评分,简介
'''
# url1 = f'https://movie.douban.com/top250'
# ua = UserAgent()
# user_agent = ua.random
# print(user_agent)
# headers = {
# 'user-agent': user_agent
# }
# resp = requests.get(url1, headers=headers)
# pageContent = resp.text
# resp.close()
# reObj = re.compile(r'
  • .*?
    .*?(?P.*?).*?'

# r'

.*?
(?P


# r'(?P.*?)人评价.*?(?P.*?)',re.S)
# ret = reObj.finditer(pageContent)
# with open('../FileForDemo/P3Demo_dataAnalysis_re_douban.csv',mode='w',encoding='utf-8') as file:
# csvWriter = csv.writer(file)
# for i in ret:
# dic = i.groupdict()
# dic['time'] = dic['time'].strip()
# csvWriter.writerow(dic.values())
# print(i.group('movie'))
# print('Down!')

# end--------3,练习,爬取豆瓣电影排行----------------------

# start--------4,练习,爬取电影天堂----------------------
'''
1,定位到电影类别标题
2,定位到标题栏下方URl电影链接页面进入子页面
3,拿到下载链接
'''

domain = 'https://www.dygod.net/'
ua = UserAgent()
user_agent = ua.random
headers = {
'user-agent': user_agent
}
resp = requests.get(domain, headers=headers)
resp.encoding = 'gb2312'
pageConetnt = resp.text
obj1 = re.compile(r'欧美电视剧.*?
.*?
    (?P.*?)
'
, re.S)
obj2 = re.compile(r", re.S)
obj3 = re.compile(r'◎译  名(?P.*?)
.*?◎片  名(?P.*?)
'

r'.*?
', re.S)
obj4 = re.compile(r'
, re.S)
movieUlList = obj1.finditer(pageConetnt)
child_herfList = []
for i in movieUlList:
ret1 = i.group('movieUlList')
ret2 = obj2.finditer(ret1)
for i in ret2:
childHref = domain + i.group('childHref').strip('/')
child_herfList.append(childHref)
with open('../FileForDemo/P3Demo_dataAnalysis_re_dygod.csv', mode='w', encoding='UTF-8') as file:
csvWriter = csv.writer(file)
for i in child_herfList:
childResp = requests.get(i, headers=headers)
childResp.encoding = 'gb2312'
childPageConetnt = childResp.text
ret3 = obj3.finditer(childPageConetnt)
for i in ret3:
dic_movieCNName = i.group('movieCNName').strip()
dic_movieENName = i.group('movieENName').strip()
fieldnames = {'movieCNName': dic_movieCNName, 'movieENName': dic_movieENName}
csvWriter.writerow(fieldnames.values())
movieDownList = obj4.finditer(i.group('movieDownList'))
for i in movieDownList:
dic = i.groupdict()
csvWriter.writerow(dic.values())
print(dic_movieCNName)
childResp.close()
resp.close()
print('Down!!!')

# end--------4,练习,爬取电影天堂----------------------
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
python爬取银行存款利率数据 2023-05-03 23:50:43