#第一步,拿到源代码 requests
#第二步拿到想要的数据 re
import re
import requests
import csv
for page in range(0,226,25):
url = "https://movie.douban.com/top250?start=%s&filter="%page
print(url)
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}
resp = requests.get(url,headers=header)
page_content = resp.text #网页源代码保存在这
#第二步
obj = re.compile('.*?(?P.*?).*?.*?
(?P.*?) .*?.*?(?P.*?).*?.*?(?P.*?)',re.S)
result = obj.finditer(page_content)
# with open("data.csv","w",encoding="utf-8") as f: 没成功
f = open("data.csv",mode="a+",encoding='utf-8') #创建一个csv文件 mode="w",mode = "a"持续写入不覆盖
csvwrite = csv.writer(f)#具有写入的功能
for i in result:
# print(i.group("name"))
# print(i.group("year").strip())#.strip()作用是去掉多余的空格
# print(i.group("score").strip())#.strip()作用是去掉多余的空格
# print(i.group("number").strip())#.strip()作用是去掉多余的空格
dic = i.groupdict()#将(?P<名>.*?)的值存入字典
dic['year'] = dic['year'].strip()#因为year前边有空格,所以给它去掉空格
csvwrite.writerow(dic.values())#将字典里值写入csv文件
f.close()
resp.close()
犯过的错误:
1.循环要对齐,格式要对齐
2.mode =‘a’ 如果是w就会出现只有一页数据的现象
r 只读模式
w 写模式
a 追加写模式



