IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> requests爬取某视频网址 -> 正文阅读

[Python知识库]requests爬取某视频网址

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

分析如何爬取某视频网址


一、分析搜索页,将链接列出

在这里插入图片描述

对当前页面展示的列表进行爬取和整理,步骤如下:

  1. 分析数据存在位置(html,js)
  2. 找到一个分割点对html所有代码进行分割
  3. 分割后找到相应的json数据
  4. 处理json数据得到链接

分析数据存在位置(html,js)

url="Ac--fun网页地址"
  headers = {
        "User-Agent": '自己的请求头'
    }
    response = requests.get(url, headers=headers)
    # print(response.text)
 
    

在这里插入图片描述

获取数据, 获取网页源代码,对网页数据进行分析,因为查看源代码可以看到,数据只有120行,试问一个网页那么多标签和Css,怎么可能才120行,有两种可能(都和js有关),一种是有一个链接可以访问json,另一种是把json都加载到js的变量里了,所以就得去分析源码里的js和分析一些请求了.
方法如下:

找到一些关键字,确保是惟一或者为数不多的关键词,复制下来,然后去NetWork找请求包
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

找到所在位置之后分析其展示的结果,这明显是第二种:把所有json都加载到了一个js里面。这种情况就得找关键词对代码进行分割

找到一个分割点对html所有代码进行分割

至于为啥找下面这段呢,因为感觉它是独一无二的,为啥从第一个截取呢,因为它前面的基本上都是没用,目标主要是找json数据

   ss = str(response.text).split("""</script><script type="text/javascript">bigPipe.onPageletArrive(""")
   ss = ss[1:]
   for i in ss:
   	  print(i)

在这里插入图片描述

分割后找到相应的json数据

可以看到基本是json数据了,但是看到最下面的html标签就知道,我们还需要继续处理字符串,先将这些复制到一个创建的新json文件中,对其进行格式化Alt+Ctrl+L(Pycharm的快捷键),分出来之后的效果如下:
在这里插入图片描述

#用一个列表来存储格式化好的json结果,
	data_html = []
    for i in ss:
        i = i.replace(");</script></body>\n</html>", '')
        if i[-2:] == ');':
            i = i[:-2]
        data_html.append(i)
    with open("js_data.json", 'w', encoding='utf-8') as f:
        st = '['
        st1 = ''
        for i in data_html:
            st1 += str(i) + ','
        st = st + st1[:-1] + ']'
        f.write(st)
     #将得到的列表进行遍历,最后拼接成 [{json},{json}]这种样式

在这里插入图片描述

得到格式化的json数据,再对json进行分析

处理json数据得到链接

在这里插入图片描述

可以发现,这个json数据不深,非常浅,直接找到html就好,分析html的方法,就是直接去网页上F12进行查找
def child_spider(param):
    '''

    :param param: html的字符串
    :return:
    '''
    soup = BeautifulSoup(param, 'html.parser')
    div = soup.findAll("div", class_="search-video-card")
    with open("href.txt", 'a+', encoding='utf-8') as f:
        for i in div:
            div_a = i.find("div", 'video__main__title ellipsis2')
            # print(div_a.text)
            a = div_a.find("a")
            href = 'https://www.acfun.cn' + a['href'] + "\n"
            f.write(href)
#对得到的json数据读取,拿出html源码并进行访问,得到链接
with open("js_data.json", 'r', encoding='utf-8') as f:
     data = json.loads(f.read())
for o in data:
     child_spider(o['html'])

二、对单个视频进行分析

下节

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-23 12:25:47  更:2021-10-23 12:26:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:46:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码