#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
任务:使用正则提取豆瓣电影数据
思路:1、获取html内容文本
2、准备正则表达式
3、使用finditet()方法,对html文本一次性提取数据生成可迭代的对象
4、循环遍历可迭代对象,使用groupdict()方法生成字典
5、把字典的值valuse写入csv文件。
@author: wangxingchun
"""
import requests
import re
import csv
url = 'https://movie.douban.com/chart'
head = {'user-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36'}
sep = requests.get(url,headers=head)
connect = sep.text
#预处理正则表达式
zhze = re.compile(r'<span style="font-size:13px;">(?P<name>.*?)</span>.*?'
r'<span class="rating_nums">(?P<nums>.*?)</span>.*?'
r'<span class="pl">\((?P<pingjia>.*?)人评价.*?',re.S)
#正式解析网页源码,生成可迭代对象(fniditer)
result = zhze.finditer(connect)
#写模式创建一个csv文件,生成字典逐行写入values
with open('data.csv','w') as f:
#设置csv写入方法
witers = csv.writer(f)
for it in result:
#print(it.group('name'))
#print(it.group('nums'))
#print(it.group('pingjia'))
#生成字典格式
dic = it.groupdict()
# print(dic)
#按行写入csv文件
witers.writerow(dic.values())
print('over')