#不知道为啥只保存了最后一页的内容,我成功获取了10页的内容
#麻烦大佬们看看,帮助我一下,谢谢
import requests
import re
import csv
for a in range(10):
url = 'https://movie.douban.com/top250?start={}&filter='.format(a*25)
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.1.5162 SLBChan/30'
}
resp = requests.get(url,headers=headers)
page_content = resp.text
#页面源代码
#解析数据
obj = re.compile(r'<li>.*?<div class="item">.*? <span class="title">(?P<name>.*?)</span>'
r'.*? <p class="">.*?<br>(?P<time>.*?) .*?<span class="rating_num"'
r' property="v:average">'
r'(?P<score>.*?)</span>.*? <span>(?P<num>.*?)</span>',re.S)
#开始匹配
result = obj.finditer(page_content)
with open('date.csv',mode='w',encoding='utf-8') as f:
csv_write=csv.writer(f)
for it in result:
dic = it.groupdict()
dic['time'] = dic['time'].strip()
dic['score'] = dic['score'].strip()
dic['num'] = dic['num'].strip()
csv_write.writerow(dic.values())
f.close()
print('结束!')
import requests
import re
import csv
with open('douban_top250.csv', mode='w', encoding='utf-8', newline='') as f:
csv_write = csv.writer(f)
for a in range(10):
url = 'https://movie.douban.com/top250?start={}&filter='.format(a * 25)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.1.5162 SLBChan/30'
}
resp = requests.get(url, headers=headers)
page_content = resp.text
obj = re.compile(r'<li>.*?<div class="item">.*? <span class="title">(?P<name>.*?)</span>'
r'.*? <p class="">.*?<br>(?P<time>.*?) .*?<span class="rating_num"'
r' property="v:average">'
r'(?P<score>.*?)</span>.*? <span>(?P<num>.*?)</span>', re.S)
result = obj.finditer(page_content)
for it in result:
dic = it.groupdict()
dic['time'] = dic['time'].strip()
dic['score'] = dic['score'].strip()
dic['num'] = dic['num'].strip()
csv_write.writerow(dic.values())
print('结束!')
只需要将循环写入放置开头即可
不知道你这个问题是否已经解决, 如果还没有解决的话:if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
while语句,当条件为真时,循环运行语句块。
try语句,与except,finally配合使用处理在程序运行中出现的异常情况。
class语句,用于定义类型。
def语句,用于定义函数和类型的方法。
pass语句,表示此行为空,不运行任何操作。
assert语句,用于程序调试阶段时测试运行条件是否满足。
with语句,Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加密,然后在语句块运行退出后解密。
yield语句,在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。
raise语句,制造一个错误。
import语句,导入一个模块或包。
from import语句,从包导入模块或从模块导入某个对象。
import as语句,将导入的对象赋值给一个变量。
in语句,判断一个对象是否在一个字符串/列表/元组里。