005 动态加载实例

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from time import sleep

# 创建一个对象,用来控制chorme以无界面模式打开
chrome_options = Options()
chrome_options.add_argument(‘--headless‘)
chrome_options.add_argument(‘--disable-gpu‘)

# 实例化driver对象
bro = webdriver.Chrome(executable_path=‘F:\\anaconda\chromedriver.exe‘, chrome_options=chrome_options)

# 发送请求
bro.get(url=‘http://www.baidu.com‘)

# 截图
# bro.save_screenshot(‘first.jpg‘)

# 查找命令
my_input = bro.find_element_by_id(‘kw‘)

# 向标签中录入指定的数据
my_input.send_keys(‘美女‘)

# 查找“百度一下”
my_button = bro.find_element_by_id(‘su‘)
my_button.click()

# 获取当前浏览器显示页面的页面源码
page_text = bro.page_source

print(type(page_text))

bro.quit()

无头浏览器实现

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from time import sleep

bro = webdriver.Chrome(‘F:\\anaconda\chromedriver.exe‘)

url = ‘https://36kr.com/information/contact‘

bro.get(url=url)

# 爬取动态加载出来的数据
js = ‘window.scrollTo(0, document.body.scrollHeight)‘
bro.execute_script(js)
sleep(2)
bro.execute_script(js)
sleep(2)
bro.execute_script(js)

page_text = bro.page_source
print(page_text)

with open(‘./36k.html‘, ‘w‘, encoding=‘utf-8‘) as fp:
    fp.write(page_text)

bro.close()

加载滚动条

import requests
from lxml import etree
import re
from multiprocessing.dummy import Pool
import random

url = ‘https://www.pearvideo.com/category_8‘
headers = {
    ‘Use-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36‘,
}

response = requests.get(url=url, headers=headers, verify=False).content.decode()
xpath_data = etree.HTML(response)
li_list = xpath_data.xpath(‘//*[@id="listvideoListUl"]/li‘)

# 实现并发建立的数据池
video_url_list = []

for li in li_list:
    # print(li)
    v_href = ‘https://www.pearvideo.com/‘ + li.xpath(‘.//div[@class="vervideo-bd"]/a/@href‘)[0]
    # print(v_href)
    d_response = requests.get(url=v_href, headers=headers).content.decode()
    video_url = re.findall(‘srcUrl="(.*?)",‘, d_response, re.S)[0]
    video_url_list.append(video_url)
    # print(video_url)

# 常见5个线程
pool = Pool(5)
dowmloadVideo = lambda link: requests.get(url=link, headers=headers).content
# map返回的列表中存储的就是下载完毕的视频二进制数据值
video_url_list = pool.map(dowmloadVideo, video_url_list)

def save_video(data):
    i = random.randint(1, 1000)
    video_name = ‘video/‘ + str(i) + ‘.mp4‘
    # i = i + 1
    with open(video_name, ‘wb‘) as fp:
        fp.write(data)

pool.map(save_video, video_url_list)

pool.close()
pool.join()

多线程的实现

from selenium import webdriver
from time import sleep

bro = webdriver.Chrome(‘F:\\anaconda\chromedriver.exe‘)
bro.get(‘https://qzone.qq.com/‘)
sleep(1)

# 定位到iframe
bro.switch_to.frame(‘login_frame‘)
user = bro.find_element_by_id(‘switcher_plogin‘)
user.click()

sleep(3)
username = bro.find_element_by_id(‘u‘)
username.send_keys(‘*****‘)

sleep(3)
password = bro.find_element_by_id(‘p‘)
password.send_keys(‘*****‘)

sleep(2)
login = bro.find_element_by_id(‘login_button‘)
login.click()

sleep(10)
bro.quit()

iframe的实现

原文地址:https://www.cnblogs.com/abc23/p/10751549.html

时间: 2024-10-14 03:48:13

005 动态加载实例的相关文章

如何按需动态加载js文件

JavaScript无非就是script标签引入页面,但当项目越来越大的时候,单页面引入N个js显然不行,合并为单个文件减少了请求数,但请求的文件体积却很大.这时候最好的做法就是按需引入,动态引入组件js和样式,文件load完成后调用callback,运行js.代码还是很简便的.塔河县臧清机械 1. 判断文件load完成.加载状态ie为onreadystatechange,其他为onload.onerror 01 if(isie){ 02     Res.onreadystatechange =

黄聪:AngularJS 动态加载控制器实例-ocLoazLazy

一.AngularJS动态加载控制器和视图实例 路由配置关键代码: [javascript] view plain copy print? //二级页面 $stateProvider.state('main', { url: '/:name', /**如果需要动态加载数据和控制器***/ views: { "": { templateUrl: function ($stateParams) { console.info($stateParams); return '/template/

php动态滚动加载实例

内容涉及:php.分页.jquery.div+css 实例下载:http://download.csdn.net/detail/roro5119/7373905 index.php <? //数据库配置文件 include("conn.php"); //默认搜索 $page = $_GET["page"] ? $_GET["page"] : 1; $pagesize = 20; $pageval = ($page-1)*20; $sql=&

Winform动态加载TabControl用法实例

本文实例讲述了Winform动态加载TabControl用法.分享给大家供大家参考. 具体实现代码如下: 代码如下: private void BindTabData() { dtIPD = new DataTable(); //drItem = new DataTable(); //获取[项目大类]列表显示于 TabPage MRD_Score model = new MRD_Score(); model.ActiveFlag = "Y"; DataTable dtScore = f

js实现动态加载脚本的方法实例汇总

本文实例讲述了js实现动态加载脚本的方法.分享给大家供大家参考,具体如下: 最近公司的前端地图产品需要做一下模块划分,希望用户用到哪一块的功能再加载哪一块的模块,这样可以提高用户体验. 所以到处查资料研究js动态脚本的加载,不过真让人伤心啊!,网上几乎都是同一篇文章,4种方法,讨厌其中拷贝别人成果的人,也不加个原文的链接.哎!关键是最后一种方法还有点错误.经过两天的研究查阅资料,在这里和大家分享一下. 首先我们需要一个被加载的js文件,我在一个固定文件夹下创建了一个package.js,打开后在

7. 反射技术:其实就是动态加载一个指定的类

反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员.简单说:反射技术可以对一个类进行解剖. 反射的好处:大大的增强了程序的扩展性. 反射的基本步骤: 1.获得Class对象,就是获取到指定的名称的字节码文件对象. 2.实例化对象,获得类的属性.方法或构造函数. 3.访问属性.调用方法.调用构造函数创建对象. 获取这个Class对象,有三种方式: 1:通过每个对象都具备的方法getClass来获取.

Python动态加载模块

需求:实现一个简单的pyton程序,接收两个参数:plugin_name, data,根据不同的plugin_name定位到不同的逻辑处理模块并进行输出. 实现方案: 使用python的库函数:load_source,将插件模块加载到一个dict中key为模块名称,value为类的实例,核心代码: def load_plugins(): global plugin_dict # 遍历插件目录加载所有py结尾的模块 for root, dirs, files in os.walk(module_p

python获取动态网站上面的动态加载的数据(初级)

我们在处理一些网站数据的时候,有时候我们需要的数据很多都是动态加载的,而不都是静态的,以下以一个实例来介绍简单的获取动态数据,首先申明本人小白,还在学习python中,这个方法还是比较笨拙的,但是对于初学者还是需要知道的. 首先我们的要求是获取下面文章的参考文献: 刚刚开始,我的想法是使用lxml.BeatifulSoup.正则表达式来处理,这几个是处理静态网站的常用方法,查看网页源码我们会发现相应的div里面是空,也就是说上面的数据不是静态的,而是后面动态加载的,利用googl浏览器可以看到:

qtp动态加载宏

说明:本文例子基于excel2010,其他版本类似 一.eom模型 在学习宏前,先了解下什么是eom模型. EOM:Excel Automation Object Model,excel的自动化模型对象.既然需要使用EOM就必须先要对其进行引用,引用完之后方可对其封装的所有方法进行调用,并对excel进行自动化.excel的组件和类名分别为Excel和Application.下图展示部分excel对象模型 说明: application->此主对象引用Excel本身. Workbooks->此