首页 > 编程语言 >自学Python爬虫笔记(day4)

自学Python爬虫笔记(day4)

时间:2023-04-08 20:22:08浏览次数:36  
标签:group item Python day4 爬虫 re url print resp

环境python3.9版本及以上,开发工具pycharm

 

今天是对requests模块的应用实战,分别是爬取豆瓣电影TOP250的基本信息和电影天堂“2023必看热片”的名称及下载地址。具体如下:

'''
爬取豆瓣电影TOP250的基本信息
思路: 1.拿到页面源代码 2.编写正则,提取页面数据 3.保存数据 ''' import requests import re f = open("top250.csv", mode='w', encoding='utf-8') # 这里通过看网址发现当前页与上下页之间的关系,从而遍历提取出所有页面的数据 for p in range(1, 11): url = "https://movie.douban.com/top250?start=(p-1)*25" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" } resp = requests.get(url, headers=headers) # resp.encoding = 'utf-8' # 解决乱码问题 pageSource = resp.text # print(pageSource) # 编写正则表达式 # re.S 可以让正则中的.匹配换行符 obj = re.compile(r'<div class="item">.*?<span class="title">(?P<moviename>.*?)</span>' r'.*?<p class="">.*?导演: (?P<daoyan>.*?)&nbsp;' r'.*?<br>(?P<year>.*?)&nbsp;.*?<span class="rating_num" property="v:average">' r'(?P<score>.*?)</span>.*?<span>(?P<number>.*?)人评价</span>', re.S) # 进行正则匹配 result = obj.finditer(pageSource) for item in result: moviename = item.group("moviename") daoyan = item.group("daoyan") year = item.group("year").strip() # 去掉字符串左右两端的空白 score = item.group("score") number = item.group("number") f.write(f'{moviename},{daoyan},{year},{score},{number}\n') # 如果觉得low,可以更换成csv模块进行数据写入 # print(moviename, daoyan, year, score, number) # f.close() # resp.close() print("豆瓣top250第{}页提取完毕!".format(p))
'''
爬取电影天堂“2023必看热片”的名称及下载地址
思路: 1.提取到主页面中的每一个电影背后的URL地址 1).拿到“2023必看热片”那一块的HTML代码 2).从刚才拿到的HTML代码中提取到href的值 2.访问子页面,提取到电影的名称及下载地址 1).拿到子页面的页面源代码 2).数据提取 ''' import re import requests url = "https://www.dy2018.com/" resp = requests.get(url) resp.encoding = 'gbk' # print(resp.text) # 1.提取2023必看热片部分的HTML代码 obj1 = re.compile(r'2023必看热片.*?<ul>(?P<html>.*?)</ul>', re.S) result1 = obj1.search(resp.text) html = result1.group("html") # print(html) # 2.提取a标签中的href的值 obj2 = re.compile(r"<li><a href='(?P<href>.*?)' title") result2 = obj2.finditer(html) obj3 = re.compile(r'<div id="Zoom">.*?◎片  名(?P<movie>.*?)<br />' r'.*? <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><a href="(?P<download>.*?)">', re.S) for item in result2: # print(item.group("href")) # 拼接出子页面的url child_url = url.strip("/") + item.group("href") child_resp = requests.get(child_url) child_resp.encoding = 'gbk' # print(child_resp.text) result3 = obj3.search(child_resp.text) print(result3.group("movie")) print(result3.group("download"))

牙疼引发头疼,难顶!!

标签:group,item,Python,day4,爬虫,re,url,print,resp
From: https://www.cnblogs.com/Hyun79/p/17299154.html

相关文章

  • python基础篇: python中的流程控制,你都了解吗?
    在之前的文章中大致的介绍过python中的流程控制语句,今天通过一些案例来详细了解一下python中的流程语句。目前python中流程控制语句,包含如下,如有遗漏欢迎留言补充。条件判断语句在python中条件判断语句包括了if、else、elif,还有在python3.10的版本新增了match-case语句。i......
  • Python开发遇到的一些问题
    1.SettingWithCopyWarning:AvalueistryingtobesetonacopyofaslicefromaDataFrame.Tryusing.loc[row_indexer,col_indexer]=valueinstead原因:python中的“变量”其实是一个“标签”,而不是一个“容器”。“链式索引”(chainedindexing)而引起的错误或警告!解决......
  • 分析以下数字的规律1 1 2 3 5 8 13 21用Python语言编程实现输出,此为斐波那契数列
    方法一:list1=[]#定义一个空列表foriinrange(15):#遍历语句循环15次ifi==0ori==1:#前两个数字的值都是1list1.append(1)#print(list1)else:list1.append(list1[i-1]+list1[i-2])print(list1)方法二:list1=[1,......
  • python 爬虫SSL错误是怎么回事?
    今天摸鱼(划掉)看道一个问题蛮有意思的,想来展开说说:别急,解决办法是有的。1.这个错误很可能是因为你正在尝试读取一个 JSON 格式的响应,但是实际返回的却是 HTML 格式的响应。我们检查一下我们的请求是否正确,并且确保请求的 URL 返回的是 JSON 格式的数据。如果确认请求 URL ......
  • 使用ChatGPT快速实现灰度和RGBA图片转换为RGB三通道图片的Python数据清洗demo
    使用ChatGPT快速实现灰度和RGBA图片转换为RGB三通道图片的Python数据清洗demo任务需求Imganet数据集,由于原始图片有灰度图片、彩色图片和RGBA图片,我们的要求是将灰度图片和RGBA图片通过Image.open(img_path+img_name).convert('RGB')转换为RGB三通道图片重新保存起来。要求点......
  • mac python 安装mysqlclient的问题
    问题1: 无法安装mysqlclient报错信息:   解决方法:1. 安装mysql-clientbrewinstallmysql-client2、配置环境变量vi~/.bash_profileexportPATH=/opt/homebrew/opt/mysql-client/bin:$PATHsource~/.bash_profile3、安装mysqlclientpipinsta......
  • Python 进阶指南(编程轻松进阶):十四、实践项目
    原文:http://inventwithpython.com/beyond/chapter14.html到目前为止,这本书已经教会了你编写可读的Python风格代码的技巧。让我们通过查看两个命令行游戏的源代码来实践这些技术:汉诺塔和四人一排。这些项目很短,并且基于文本,以保持它们的范围较小,但是它们展示了本书到目前为......
  • Python 进阶指南(编程轻松进阶):十七、Python 风格 OOP:属性和魔术方法
    原文:http://inventwithpython.com/beyond/chapter17.html很多语言都有OOP特性,但是Python有一些独特的OOP特性,包括属性和魔术方法。学习如何使用这些Python风格技巧可以帮助您编写简洁易读的代码。属性允许您在每次读取、修改或删除对象的属性时运行一些特定的代码,以......
  • python代码搜集
    以下更新至2023年4月8日,这是日常工作中利用python帮同事们写的一些小工具,帮他们处理大量重复性工作,提高工作效率,解放生产力!里面涉及的账号密码、邮箱、token、key等敏感信息均已改成随机码,不用尝试哦auto_mail.py#帮助丁方硕发送外汇周报邮件的程序,执行后会将一段文本和指定......
  • Python 进阶指南(编程轻松进阶):七、编程术语
    原文:http://inventwithpython.com/beyond/chapter7.html在XKCD漫画《飞人五号》(xkcd.com/1133)中,网络漫画的艺术家兰道尔·门罗只用了1000个最常见的英语单词,就创作出了土星五号火箭的技术示意图。这部漫画把所有的技术术语分解成小孩子能理解的句子。但这也说明了为什么我......