zoukankan      html  css  js  c++  java
  • Python爬虫学习教程 猫眼电影网站视频爬取!【附源码】

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

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

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

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

    对于初学者在学习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) + '
    ')
     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一定要多动手!

  • 相关阅读:
    让网络编程更轻松和有趣 t-io
    设计一个百万级的消息推送系统
    前端安全系列之二:如何防止CSRF攻击
    Maven仓库下载jar包失败的处理方案
    SpringBoot2中配置文件的调整,升级SpringBoot2时候注意的坑
    Table折叠小技巧html-demo
    mysql如何分类统计数量
    前台登录和Token信息交互流程
    windows下安装mysql5.6
    【读书笔记】-- 你不知道的JavaScript
  • 原文地址:https://www.cnblogs.com/ITbiancheng/p/12744158.html
Copyright © 2011-2022 走看看