欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python爬虫学习教程 猫眼电影网站视频爬取!【附源码】

程序员文章站 2022-06-21 23:04:03
学习Python是否感到过度劳累,四肢乏力,腰腿酸痛?这是没找到学习方法的表现!都知道编程是环环相扣的吧 如果基础没学好的话 那么代码你是肯定看不懂的~每个技术大牛都是从基础慢慢的提升上去的,基础知识越深以后的发展越牛! ......

学习python是否感到过度劳累,四肢乏力,腰腿酸痛?这是没找到学习方法的表现!都知道编程是环环相扣的吧 如果基础没学好的话 那么代码你是肯定看不懂的~每个技术大牛都是从基础慢慢的提升上去的,基础知识越深以后的发展越牛!

思路:
1.利用requests去过去网站上的前端源代码 在源代码中存在我们想要获取的数据
2.在源代码中筛选出我们想要的数据 数据筛选 bs4
3.把筛选出来的数据存放到文件中 保存数据

爬虫的原理:
模拟浏览器向服务器发送一个get()请求,服务器接收到请求之后返回相应的数据给爬虫代码

get() 单纯的拿数据
post() 在拿数据的过程中还能修改数据

Python爬虫学习教程 猫眼电影网站视频爬取!【附源码】

对于初学者在学习python过程中有不懂的或是缺少这方面学习教程的可以加一下我建的python技术的学习裙;九三七六六七五零九,一起学习。群里有相关开发工具,学习教程,每天还有专业的老司机在线直播分享知识与技术答疑解惑!

项目源码

  1 # pip install bs4
  2 from bs4 import beautifulsoup
  3 
  4 # 网络请求包 它能获取到网站上的前端源代码
  5 
  6 # pip install requests
  7 import requests
  8 
  9 # json 在文件处理中 python没有办法把一个对象写入文件中 字典就是python中的一个对象
 10 import json
 11 
 12 '''
 13 在python中的表现形式
 14     基本数据类型
 15         列表
 16         字典
 17         集合
 18         元组
 19         
 20         字典  {'name': '未衬'} 运用在后端
 21         json {"name": "未衬"} 运用在前端
 22 '''
 23 
 24 '''
 25 思路:
 26     1.利用requests去过去网站上的前端源代码 在源代码中存在我们想要获取的数据
 27     2.在源代码中筛选出我们想要的数据 数据筛选 bs4
 28     3.把筛选出来的数据存放到文件中 保存数据
 29     
 30     爬虫的原理:
 31         模拟浏览器向服务器发送一个get()请求,服务器接收到请求之后返回相应的数据给爬虫代码
 32         
 33         get() 单纯的拿数据
 34         post() 在拿数据的过程中还能修改数据
 35 '''
 36 # 这种数据结构是一种典型的字典格式
 37 # 作用 定义浏览器
 38 headers = {
 39     'user-agent':
 40         'mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/72.0.3626.121 safari/537.36'
 41 }
 42 
 43 
 44 # 获取请求页面
 45 '''
 46 url 是一种形式参数
 47     我们去调用getpage()这个函数的时候要去给这个url做赋值
 48 '''
 49 
 50 
 51 def getpage(url):
 52     # 异常处理 保证我们的程序不会因为网络原因导致程序崩溃
 53     try:
 54         response = requests.get(url, headers=headers)
 55         if response.status_code == 200:
 56             return response.text
 57         else:
 58             return none
 59     except exception:
 60         return none
 61 
 62 
 63 # 获取电影信息 pip install lxml
 64 def getinfo(html):
 65     # 使用beautifulsoup匹配电影的索引 海报 电影名 主演 评分
 66     soup = beautifulsoup(html, 'lxml')
 67     items = soup.select('dd')
 68 
 69     for item in items:
 70         index = item.find(name='i', class_='board-index').get_text()
 71         name = item.find(name='p', class_='name').get_text()
 72         start = item.find(name='p', class_='star').get_text().strip()
 73         time = item.find(name='p', class_='releasetime').get_text()
 74         score = item.find(name='p', class_='score').get_text()
 75 
 76         # 生成器
 77 
 78         '''
 79         迭代器
 80         生成器
 81         装饰器
 82         '''
 83 
 84         # 可以把yield看成return 就是专门返回数据的 yield有一种特性 惰性机制
 85         # 它因为这种机制 可以实现节约内存的效果
 86         yield {
 87             'index': index,
 88             'name': name,
 89             'start': start,
 90             'time': time,
 91             'score': score
 92         }
 93 
 94 # 写入文件
 95 def writedata(field):
 96     # 文件处理
 97     with open('maoyan_info.txt', 'a', encoding='utf-8') as f:
 98         f.write(json.dumps(field, ensure_ascii=false) + '\n')
 99 
100 
101 # 入口函数
102 if __name__ == "__main__":
103     for num in [i * 10 for i in range(11)]:
104         url = 'https://maoyan.com/board/4?offset=' + str(num)
105         html = getpage(url)
106 
107         for item in getinfo(html):
108             print(item)
109             writedata(item)
110 
111 
112 '''

代码不要直接复制,要自己动手敲,学习python一定要多动手!