目录
A 准备工作
B 编写代码
a 遇到的问题与总结
b (?P.*?)
c newline = '',a+
d 正则表达式
哈喽,打卡记录一下,今天练习的是用re,requests模块儿来获取豆瓣Top250的部分数据。
先打开我们好朋友--豆瓣的网址豆瓣电影 Top 250
A 准备工作打开网址后,右键鼠标来查看源代码。(看网页源码更清楚些)
进入网页源码后,ctr+f后再输入框里输入内容,来快速定位。
再因为我们是要获取榜单的多页数据,所有要看看每页的URL有什么闺女。
# https://movie.douban.com/top250?start=0&filter= 1 # https://movie.douban.com/top250?start=25&filter= 2 # https://movie.douban.com/top250?start=50&filter= 3 # (page - 1) * 25 # 每一页的网页 # 'https://movie.douban.com/top250?start=' + str((page - 1) * 25)
好了,现在就开始代码部分了。
B 编写代码""" 2022年 CSDN:抄代码抄错的小牛马 """ # https://movie.douban.com/top250?start=0&filter= 1 # https://movie.douban.com/top250?start=25&filter= 2 # https://movie.douban.com/top250?start=50&filter= 3 # (page - 1) * 25 # 每一页的网页 # 'https://movie.douban.com/top250?start=' + str((page - 1) * 25) # 需求:收集豆瓣电影榜单前十页的部分数据 import csv import re import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36' } def get_url(page): url = 'https://movie.douban.com/top250?start=' + str((page - 1) * 25) response = requests.get(url=url, headers=headers) content = response.text return content def get_shuju(content): # 正则解析 obj = re.compile(r'.*?.*?(?P.*?)' r'.*? (?P
', re.S) # 开始匹配数据 shuju = obj.finditer(content, page) # newline = '',这里是防止空行写入 f = open('douban.csv', mode='a+', encoding='utf-8', newline='') # 这里模式改为 a+ ,因为 w ,在写入时会覆盖之前的数据 writer = csv.writer(f) for i in shuju: # name = i.group('name') # people = i.group('people').strip().replace(' ', '').replace(';', '') # juqing = i.group('juqing').strip().replace(' ', '').replace(';', '') dic = i.groupdict() dic['people'] = dic['people'].strip().replace(' ', '').replace(';', '') dic['juqing'] = dic['juqing'].strip().replace(' ', '').replace(';', '') writer.writerow(dic.values()) f.close() if __name__ == '__main__': stat_page = (int(input("请输入起始页码:"))) end_page = (int(input("请输入结束页码:"))) for page in range(stat_page, end_page + 1): # 获取网页的源码(响应数据) response content = get_url(page) # 解析网页,获取数据 get_shuju(content).*?)
' r'.*?/ (?P.*?)
运行查看:
a 遇到的问题与总结 b (?P
不知问题,我打不出来这(?P
CSV以逗号 , 来分隔数据newline可以取的值有None, n, r, ”, ‘rn’, newline = ''解决CSV的数据空一行
Python *** 作 csv文件笔记_xiaoyu_wu的博客-CSDN博客
Python文件 *** 作,with open as追加文本内容实例_天山懒人-CSDN博客_python 文件追加
d 正则表达式正则表达式 – 语法 | 菜鸟教程 ?跟在*或者+后边用时,表示懒惰模式。也称非贪婪模式。就是匹配尽可能少的字符。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)