python驾到~障碍通通闪开,美女批量入内存~

前言

嗨喽~大家好呀,这里是魔王呐 !

python驾到~障碍通通闪开,美女批量入内存~

又是普普通通采集美女得一天啊~

目录

; 环境使用:

  • Python 3.8
  • Pycharm
  • 谷歌浏览器
  • 谷歌驱动

模块使用:

  • requests >>> pip install requests
  • re
  • json
  • selenium >>> pip install selenium==3.141.0

安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
  2. 在pycharm中点击Terminal(终端) 输入安装命令

如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
  2. 点击齿轮, 选择add
  3. 添加python安装路径

pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)
  2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
  3. 选择相应的插件点击 install(安装) 即可
  4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效

思路分析

先采集一个视频内容 —> 采集这个视频博主所有视频内容

如何实现案例: 流程思路

一. 数据来源分析:

  1. 明确需求: 采集那个网站上面什么数据内容 —> 1. 视频标题 2. 视频播放链接
  2. 通过开发者工具进行抓包分析, 分析数据所在地方
  3. F12 或者 鼠标右键点击检查选择network 刷新网页 —> 为了让本网页相关数据内容, 重新加载一遍
  4. 找视频播放链接在什么地方 —> 找media
  5. 已知 视频播放链接 —> 分析这个视频播放链接在什么可以得到 通过搜索分析, 可以找到视频数据来源, 但是链接是转码了

二. 代码实现步骤过程

  1. 发送请求, 模拟浏览器对于url地址发送请求
  2. 获取数据, 获取服务器返回响应数据 开发者工具里面 response
  3. 解析数据, 提取我们想要数据内容
  4. 视频链接
  5. 视频标题
  6. 保存数据, 把视频内容保存本地文件夹

批量采集代码

导入数据请求模块

第三方模块 需要在cmd里面或者pycharm终端里面进行安装 pip install requests

import requests

import re

import json

from pprint import pprint

from selenium import webdriver

import time

“””

发送请求, 模拟浏览器对于url地址发送请求

  • 对于url地址 请求成功, 但是不代表你一定得到数据
  • 为什么没有得到我们想要数据内容 当我们被服务器识别出来是爬虫程序的时候, 我可能得不到数据, 或者得到数据不是我们想要的

selenium 模拟人的行为去操作浏览器, 获取所有视频ID

定位元素获取视频播放页url地址

selenium —> 浏览器驱动谷歌 —> 浏览器谷歌

“””

打开浏览器 实例化浏览器对象 driver 浏览器对象

driver = webdriver.Chrome()

输入网址, 访问网站

因为代码里有链接,不给过的,所以我只能截个图展示一下,你们可以根据下方图片添加完整哦~

python驾到~障碍通通闪开,美女批量入内存~

或点击 蓝色字体 领取完整源码,我都放在这里了。

滑动页面,让网页加载所有视频内容 selenium 去执行js代码

def drop_down():
    """执行页面滚动的操作 自定义函数"""
    for x in range(1, 30, 4):
        time.sleep(1)
        j = x / 9

        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)

drop_down()

通过元素定位 通过 css 选择器查找元素 所有li标签

lis = driver.find_elements_by_css_selector('.Eie04v01')
if lis:
    pass
else:
    lis = driver.find_elements_by_css_selector('.ECMy_Zdt')

for li in lis:
    try:
        time.sleep(1)

        url = li.find_element_by_css_selector('a').get_attribute('href')
        print(url)

确定请求url地址

python驾到~障碍通通闪开,美女批量入内存~

        headers = {

            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
        }

发送请求

        response = requests.get(url=url, headers=headers)

“””
获取数据, 获取服务器返回响应数据

开发者工具里面 response —> response.text

解析数据, 提取我们想要数据内容

  • 视频链接
  • 视频标题

正则re提取数据内容

调用re模块findall方法 –> 找到我们想要的数据内容

re.findall(‘什么数据’, ‘什么地方’)

从什么地方, 去找什么样的数据内容

从 response.text 里面 去找 <title data-react-helmet="true">(.*?)</title> 其中(.*?) 这段是我们要的数据

print(json_data) –> 打印字典数据 返回一行数据内容

pprint(json_data) –> 打印字典数据 返回多行数据内容 展开效果

字典数据提取内容

键值对取值 —> 根据冒号左边的内容[键], 提取冒号右边的内容[值]

“””

提取标题

        title = re.findall('(.*?)', response.text)[0]

        video_info = re.findall('(.*?)</script'</span><span class="token punctuation">,</span> response<span class="token punctuation">.</span>text<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>

        html_data <span class="token operator">=</span> requests<span class="token punctuation">.</span>utils<span class="token punctuation">.</span>unquote<span class="token punctuation">(</span>video_info<span class="token punctuation">)</span>

        json_data <span class="token operator">=</span> json<span class="token punctuation">.</span>loads<span class="token punctuation">(</span>html_data<span class="token punctuation">)</span>

        video_url <span class="token operator">=</span> <span class="token string">'https:'</span> <span class="token operator">+</span> json_data<span class="token punctuation">[</span><span class="token string">'32'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'aweme'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'detail'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'video'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'bitRateList'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'playAddr'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'src'</span><span class="token punctuation">]</span>
</code></pre><p>"""<br>保存数据, 把视频内容保存本地文件夹</p><ul><li>对于视频链接发送请求, 获取数据的</li></ul><p>response.content 获取二进制数据内容<br>"""</p><pre><code class="prism language-python">
        video_content <span class="token operator">=</span> requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>url<span class="token operator">=</span>video_url<span class="token punctuation">,</span> headers<span class="token operator">=</span>headers<span class="token punctuation">)</span><span class="token punctuation">.</span>content

        <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'video\\'</span> <span class="token operator">+</span> title <span class="token operator">+</span> <span class="token string">'.mp4'</span><span class="token punctuation">,</span> mode<span class="token operator">=</span><span class="token string">'wb'</span><span class="token punctuation">)</span> <span class="token keyword">as</span> f<span class="token punctuation">:</span>

            f<span class="token punctuation">.</span>write<span class="token punctuation">(</span>video_content<span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span>title<span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span>video_url<span class="token punctuation">)</span>
    <span class="token keyword">except</span><span class="token punctuation">:</span>
        <span class="token keyword">pass</span>
</code></pre><h2><a id="_269"></a>下面,我们来欣赏一下小姐姐吧~</h2><p><img src="https://img-blog.csdnimg.cn/b9c4525cef1043e8820725724e64e13e.png"></p><p><img src="https://img-blog.csdnimg.cn/7b3863f9e0a74ebbb77f0262e05920c3.png"><br><img src="https://img-blog.csdnimg.cn/70ae7b2f0d8e404eafec68791a9f9a4c.png"><br><img src="https://img-blog.csdnimg.cn/8e1ede715120463e8a60330d72c8640e.png"><br><img src="https://img-blog.csdnimg.cn/270467d4e40d489da783ca12c7aee960.png"><br><img src="https://img-blog.csdnimg.cn/3c7dbdb577954bd1840add5427298e99.png"><br><img src="https://img-blog.csdnimg.cn/853a3085d6c94192a56c074fb38f8b16.png"><br><img src="https://img-blog.csdnimg.cn/442e16e6af70497c8ab6786ed93880ff.png"><br><img src="https://img-blog.csdnimg.cn/541842d37a22477da37c7b8555a2b67b.png"></p><p>文章看不懂,我专门录了对应的视频讲解,本文只是大致展示,完整代码和视频教程点击下方蓝字</p><p>点击 <a href="https://jq.qq.com/?_wv=1027&k=fWtpTWBM">蓝色字体</a> 自取,我都放在这里了。</p><h2><a id="_289">;</a>尾语</h2><p>要成功,先发疯,下定决心往前冲!</p><p>学习是需要长期坚持的,一步一个脚印地走向未来!</p><p>未来的你一定会感谢今天学习的你。</p><p>—— 心灵鸡汤</p><p>本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝</p><p><img src="https://img-blog.csdnimg.cn/e015446cc0c348da94b9dd8c577ccfae.gif"></p><p class="node-read-div2p">👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇</p>

Original: https://blog.csdn.net/python56123/article/details/127394684
Author: 魔王不会哭
Title: python驾到~障碍通通闪开,美女批量入内存~

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/673774/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球