Selenium控制已运行的Edge和Chrome浏览器——在线控制 | 人机交互(详细启动步骤和bug记录)

文章目录

  • 前期准备
  • 1. 浏览器开启远程控制指令
    • (1)Edge
    • (2)Chrome
  • 2. 执行python代码
    • (1)先启动浏览器后执行代码
    • (2)通过代码启动浏览器
    • (3)Bug问题记录
      • 1)python可读取浏览器所有标签标题,但检索网页元素失败
      • 2)浏览器开启程序,但python程序无法链接浏览器进行自动控制
  • 3. 爬取效果
  • 3. 完整代码共享
    • 3.1 包含Excel部分的完整代码
    • 3.2 爬虫部分的完整代码


说明:本记录是在Windows系统上执行的!
起因是:博导要求统计一下国内某个领域的专家情况,统计主持国家自然科学基金的副教授和教授都有哪些大牛!
于是:本人去[NSFC]:https://kd.nsfc.cn/ 下载全部的历史基金项目书。。。。工作量太大就……半自动化实现吧!!!


前期准备

1. python Selenium库
2. Edge浏览器 或 Chrome浏览器

1. 浏览器开启远程控制指令

  1. 无论是哪种浏览器,都需要使用终端独立运行浏览器的远程调试模式。
  2. 开启方式:加入指令(–remote-debugging-port=9222 --user-data-dir=“D:\selenium\AutomationProfile”)

需要进入目标浏览器的根目录! 不然就输入全路径!

(1)Edge

.\msedge.exe --remote-debugging-port=9222 --user-data-dir=“D:\selenium\AutomationProfile”

(2)Chrome

 .\chrome.exe --remote-debugging-port=9222 --user-data-dir=“D:\selenium\AutomationProfile”

在这里插入图片描述

2. 执行python代码

(1)先启动浏览器后执行代码

  • 必须是先执行上述步骤,开启了浏览器的远程调试端口后,才能通过下方代码进行控制。

  • add_experimental_option("debuggerAddress", "127.0.0.1:9222") 这句话是关键!

from selenium import webdriver
from selenium.webdriver.edge.options import Options

class Test:
    def edge(self):
        edge_driver_path = executable_path=r'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
        chrome_options = Options()
        # chrome_options.binary_location = edge_driver_path  #  传入驱动地址
        chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")  # "127.0.0.1:9222"其中,9222是浏览器的运行端口
        # 让浏览器带着这个配置运行
        # chrome_options.add_experimental_option('detach', True)  # 通过option参数,设置浏览器不关闭
        driver = webdriver.Edge(options=chrome_options, keep_alive=True)
        driver.implicitly_wait(10)  # 页面元素查找的等待时间
        self.driver = driver
        pass
        
    def chrome_drive(self, drive='chrome'):
        edge_driver_path = executable_path = r'D:\Program Files\Google\Chrome\Application'
        if drive == 'chrome':
            chrome_options = webdriver.ChromeOptions()
            # chrome_options.binary_location = edge_driver_path    #  传入驱动地址
            # chrome_options.add_experimental_option('detach', True)  # 通过option参数,设置浏览器不关闭
            chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
            driver = webdriver.Chrome(options=chrome_options, keep_alive=False)
            driver.implicitly_wait(10)  # 页面元素查找的等待时间
	        self.driver = driver
	        pass

(2)通过代码启动浏览器

  • 这个时候被注释掉的 .binary_location = edge_driver_path 是关键!
  • 这种情况下,需要下载对应的驱动软件(.exe)
  • 博主在笔记本电脑上首次尝试Selenium时就下载了驱动软件!但后来在台式电脑使用相同代码时发现,压根不需要下载什么驱动软件!
  • 只需要使用终端提前启动浏览器的调试模型即可。 (这是弯路、坑)
  • 因为,如果是通过代码启动浏览器的调试模型,需要配置路径,然后保证程序关闭后浏览器依旧运行!麻烦!!!

(3)Bug问题记录

1)python可读取浏览器所有标签标题,但检索网页元素失败

  • 部分网页不支持爬取!特别是当网页开启F12的开发人选项后,会出现无法查找元素的问题。
  • 此时,关闭 “开发人选项” 即可。

2)浏览器开启程序,但python程序无法链接浏览器进行自动控制

  • 关闭原有浏览器,重新打开浏览器(需搭配命令:–remote-debugging-port=9222 --user-data-dir=“xxx folder”

3. 爬取效果

![(https://img-blog.csdnimg.cn/direct/492fe54da6c24809a654191a43365f14.png)

3. 完整代码共享

以下代码主要实现了:

  • 浏览器标签页的翻动和选择
  • 爬取 – 青塔网检索”国家自然科学基金项目“的作者信息,并保存到表格。
  • 爬取 – NSFC”国家自然科学基金项目“的作者信息,并保存到表格。
  • 爬取 – 国际某个领域专家的作者信息,并保存到表格。

3.1 包含Excel部分的完整代码

包含Excel部分的完整代码见:资源文件

3.2 爬虫部分的完整代码

import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.action_chains import ActionChains

# '.\chrome.exe --remote-debugging-port=9222 --user-data-dir=“D:\selenium\AutomationProfile”             n "*" --ws --allow-insecure-unlock --nodiscover --authrpc.addr 127.0.1.2 --authrpc.port 8545'
# '.\chrome.exe --remote-debugging-port=9222 --user-data-dir=“D:\selenium\AutomationProfile”'


class Web_Browser:
    def __init__(self, drive='chrome'):
        self.driver = None
        # self.edge()
        self.chrome_drive()

    def edge(self):
        # edge_driver_path = executable_path=r'D:\Program Files\Google\Chrome\Application\chromedriver.exe'
        edge_driver_path = executable_path=r'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
        chrome_options = Options()
        # chrome_options.binary_location = edge_driver_path
        # 配置浏览器
        # 添加User-Agent到Chrome选项中
        # chrome_options.add_argument("--user-agent=windows 10 Edge")
        # "127.0.0.1:9222"其中,9222是浏览器的运行端口
        chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
        # 让浏览器带着这个配置运行
        # chrome_options.add_experimental_option('detach', True)  # 通过option参数,设置浏览器不关闭
        driver = webdriver.Edge(options=chrome_options, keep_alive=True)
        # driver = webdriver.Chrome( options=chrome_options)
        print('===================')
        # driver.get('www.baidu.com')
        driver.implicitly_wait(10)
        self.driver = driver



    def chrome_drive(self, drive='chrome'):
        edge_driver_path = executable_path = r'D:\Program Files\Google\Chrome\Application\chromedriver.exe'
        if drive == 'chrome':
            chrome_options = webdriver.ChromeOptions()
            # chrome_options.binary_location = edge_driver_path
            # chrome_options.add_experimental_option('detach', True)  # 通过option参数,设置浏览器不关闭
            chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

            driver = webdriver.Chrome(options=chrome_options, keep_alive=False)
            self.driver = driver
            driver.implicitly_wait(10)
        self.opened_windows_dict = None
        pass

    def get_all_opened_windows(self):
        driver = self.driver
        cw = driver.current_window_handle
        res = {}
        # 获取已打开的标签页的信息
        tabs = driver.window_handles
        for t in tabs:
            driver.switch_to.window(t)
            res[str(driver.title)] = str(t)
        self.opened_windows_dict = res
        driver.switch_to.window(cw)
        print('已打开的标签页的信息:',)
        for k in res: print(f"\t{k}: {res[k]}")
        return res

    def switch_window(self, key):
        driver = self.driver
        cw = driver.current_window_handle
        # 获取已打开的标签页的信息
        tabs = driver.window_handles
        for t in tabs:
            driver.switch_to.window(t)
            if key in str(driver.title): cw = t
            break
        # driver.switch_to.window(cw)
        self.driver = driver
        pass


    def open_new_window(self, driver=None, url=None, delay_t=0.6):
        '''# 打开新标签页'''
        driver = self.driver if not driver else driver
        old_handle = driver.window_handles  # 获取已打开的标签页的信息
        # driver.find_element("body").send_keys(Keys.CONTROL + 't')  # 没有实体会报错
        # driver.execute_script("window.open('','_blank');")  # 可能被拦截
        driver.switch_to.new_window('tab')
        time.sleep(delay_t)
        if len(driver.window_handles) >len(old_handle): return True
        driver.execute_script(f"window.open('{url if url else ''}');")
        time.sleep(delay_t)
        if len(driver.window_handles) >len(old_handle): return True
        return False

    def func1(self, xlsx):
        """ 学术网 """
        for p in range(50):
            # self.switch_window('故障诊断')
            driver = self.driver
            web = driver.find_element(by=By.XPATH, value='//*[@id="search_body"]/div[2]/div[3]/div[1]/div[2]/div[1]/div[3]/div[2]/div/div[2]/div[2]/div/div')
            web1 = web.find_elements(by=By.CLASS_NAME, value='inner-content')
            print('web1 len=', len(web1))
            num = 0
            for i, w in enumerate(web1):
                try:
                    # '//*[@id="search_body"]/div[2]/div[3]/div[1]/div[2]/div[1]/div[3]/div[2]/div/div[2]/div[2]/div/div'
                    #
                    a = w.find_element(by=By.XPATH, value=f'//div[{1+i}]/div/div[2]/div[1]/div[1]/div/a/strong/span/span').text
                    try:
                        b = w.find_element(by=By.XPATH, value=f'//div[{1 + i}]/div/div[2]/div[3]/p[2]').text
                        school = str(b).split(',')
                        for s in school:
                            if 'university' in s.lower(): b = s[1:]
                    except: b = None
                    c = w.find_element(by=By.XPATH, value=f'//div[{1 + i}]/div/div[2]/div[3]/p[1]').text
                    d = None
                    e = None
                    f = None
                    try:
                        h_index = w.find_element(by=By.XPATH, value=f'//div[{1 + i}]/div/div[2]/div[2]/div/span[1]/span[3]').text
                        paper = w.find_element(by=By.XPATH, value=f'//div[{1 + i}]/div/div[2]/div[2]/div/span[2]/span[3]').text
                        cite = w.find_element(by=By.XPATH, value=f'//div[{1 + i}]/div/div[2]/div[2]/div/span[3]/span[3]').text
                        f = f"H-index: {h_index},  papers: {paper}, cites: {cite}"
                    except: pass

                    g = None
                    h = w.find_element(by=By.XPATH, value=f'//div[{1 + i}]/div/div[2]/div[1]/div[1]/div/a')
                    h = 'https://www.aminer.cn/' + h.get_attribute('href')
                    print(a, b ,c, g)
                    xlsx.input_data(a,b,c,d,e,f,g, h)
                    num += 1
                except: pass
            print('记录:', num)
            # aa = driver.find_elements(by=By.XPATH, value='//*[@id="search_body"]/div[2]/div[3]/div[1]/div[2]/div[1]/div[3]/div[2]/div/div[2]/div[3]/ul/li')
            # aa = aa[-1]
            aa = driver.find_element(by=By.CLASS_NAME, value='ant-pagination-next')
            # v = '#search_body > div.ant-tabs.ant-tabs-top.a-aminer-core-search-index-searchPageTab.ant-tabs-line.ant-tabs-no-animation > div.ant-tabs-content.ant-tabs-content-no-animated.ant-tabs-top-content > div.ant-tabs-tabpane.ant-tabs-tabpane-active > div.a-aminer-core-search-index-componentContent > div.a-aminer-core-search-c-search-component-temp-searchComponent > div.view > div:nth-child(2) > div > div:nth-child(2) > div.paginationWrap > ul > li.ant-pagination-next'
            # aa = driver.find_element(by=By.CSS_SELECTOR, value=v)
            # 创建一个ActionChains对象,用于执行鼠标动作
            action_chains = ActionChains(driver)
            # 将鼠标移动到链接元素上并点击
            action_chains.move_to_element(aa).click().perform()
            print(f'第{p+1}页 --> 第{p+2}页')
            try:
                xlsx.make_frame()
                xlsx.save_excel()
            except: pass
            time.sleep(5)
        pass

    def func2(self, xlsx=None):
        for p in range(50):
            self.switch_window('青塔')
            driver = self.driver
            web = driver.find_element(by=By.XPATH,
                                      value='//*[@id="app"]/div[2]/div[1]/div/div[2]/div[2]/div/div[2]')

            web1 = web.find_elements(by=By.CLASS_NAME, value='list-item')
            print('web1 len=', len(web1))
            num = 0
            for i, w in enumerate(web1):
                # try:
                # //*[@id="app"]/div[2]/div[1]/div/div[2]/div[2]/div/div[2]
                # '//*[@id="app"]/div[2]/div[1]/div/div[2]/div[2]/div/div[2]/div/div[2]/div[2]/div[2]/div[1]/div[2]'
                # //*[@id="app"]/div[2]/div[1]/div/div[2]/div[2]/div/div[2]/div/div[1]/div[2]/div[2]/div[1]/div[1]

                b = w.find_element(by=By.XPATH, value=f'//div[2]/div[1]/div[1]/div[2]')
                print(b)
                b = b.text
                print('b=', b)
                a = w.find_element(by=By.XPATH, value=f'//div[2]/div[2]/div[1]/div[2]').text
                print('a=', a)
                c = None
                d = None
                e = w.find_element(by=By.XPATH, value=f'//div[1]/div[1]').text
                print('e=', e)
                year = w.find_element(by=By.XPATH, value=f'//div[2]/div[2]/div[2]/div[2]').text
                money = w.find_element(by=By.XPATH, value=f'//div[2]/div[1]/div[2]/div[2]').text
                print('year=', year, 'money=', money)
                e = f"{e}, 立项: {year}, 资助: {money}"
                jijin = w.find_element(by=By.XPATH, value=f'//div[2]/div[3]/div[1]/div[2]').text
                domain = w.find_element(by=By.XPATH, value=f'//div[2]/div[3]/div[2]/div[2]').text
                print('jijin=',jijin, 'domain=', domain)
                f = f"{jijin}, 领域: {domain}"
                g = None
                h = None
                print(i, '-----------', i)
                print(a, b, c, d, e, f)
                xlsx.input_data(a, b, c, d, e, f, g, h)
                num += 1
                break
                # except: pass
            print('记录:', num)
            break
            aa = driver.find_element(by=By.XPATH, value=f'//*[@id="app"]/div[2]/div[1]/div/div[2]/div[2]/div/div[3]/button[2]')
            # 创建一个ActionChains对象,用于执行鼠标动作
            action_chains = ActionChains(driver)
            # 将鼠标移动到链接元素上并点击
            action_chains.move_to_element(aa).click().perform()
            print(f'第{p + 1}页 --> 第{p + 2}页')
            try:
                xlsx.make_frame()
                xlsx.save_excel()
            except:
                pass
            time.sleep(5)
        pass

    def func3(self, xlsx=None):
        for p in range(50):
            self.switch_window('大数据知识管理服务门户')
            driver = self.driver
            d = driver.find_element(by=By.CLASS_NAME, value='container_list_right')
            print('d==', d)
            # web = driver.find_element(by=By.XPATH,
            #                           value='//*[@id="app"]/div[1]/div[3]/div/div[3]/div[1]/div')
            web = d.find_element(by=By.XPATH, value='//div[1]/div')
            # web1 = web.find_elements(by=By.CLASS_NAME, value='list-item')
            # print('web1 len=', len(web1))
            num = 0
            for i, w2 in enumerate(range(6)):
                w = web
                try:
                    # //*[@id="app"]/div[1]/div[3]/div/div[3]/div[1]/div
                    # //*[@id="app"]/div[1]/div[3]/div/div[3]
                    # //*[@id="app"]/div[1]/div[3]/div/div[3]/div[1]/div/div[2]/div[2]/div[1]

                    b = w.find_element(by=By.XPATH, value=f'//div[{i+1}]/div[3]/div[4]/a')
                    b = b.text
                    # print('b=', b)
                    a = w.find_element(by=By.XPATH, value=f'//div[{i+1}]/div[2]/div[4]/a').text
                    # print('a=', a)
                    c = None
                    d = None
                    e = w.find_element(by=By.XPATH, value=f'//div[{i+1}]/div[1]/div[1]/p/a').text
                    # print('e=', e)
                    year = w.find_element(by=By.XPATH, value=f'//div[{i+1}]/div[3]/div[3]').text
                    money = w.find_element(by=By.XPATH, value=f'//div[{i+1}]/div[3]/div[1]').text
                    # print('year=', year, 'money=', money)
                    e = f"{e}, {year}, {money}"
                    jijin = w.find_element(by=By.XPATH, value=f'//div[{i+1}]/div[2]/div[3]').text
                    domain = w.find_element(by=By.XPATH, value=f'//div[{i+1}]/div[2]/div[1]').text
                    # print('jijin=',jijin,  domain)
                    f = f"{jijin}, {domain}"
                    g = None
                    h = None
                    print(i+1, '-----------', i+1)
                    print(a, b, c, d, e, f)
                    xlsx.input_data(a, b, c, d, e, f, g, h)
                    num += 1
                # break
                except: pass
            print('记录:', num)
            # break
            # aa = driver.find_element(by=By.CLASS_NAME, value=f'btn-next')
            # # 创建一个ActionChains对象,用于执行鼠标动作
            # action_chains = ActionChains(driver)
            # # 将鼠标移动到链接元素上并点击
            # action_chains.move_to_element(aa).click().perform()
            print(f'第{p + 1}页 --> 第{p + 2}页')
            try:
                xlsx.make_frame()
                xlsx.save_excel()
            except:
                pass
            break
            # time.sleep(5)
        pass


    def func4(self, xlsx=None, key='Google2'):
        if key == 'Google': self.switch_window('Google')
        else: self.switch_window('必应')
        driver = self.driver
        data = xlsx.read_excel()
        # print(data['姓名'])
        for i, name in enumerate(data['姓名']):
            school = data['学校'][i]
            text = f'{school}{name}是不是教授'
            print(f'search [{i+1}]:  {name} -》 ', text)
            if key == 'Google': web = driver.find_element(by=By.XPATH, value='//*[@id="APjFqb"]')
            else: web = driver.find_element(by=By.XPATH, value='//*[@id="sb_form_q"]')
            web.clear()
            web.send_keys(text)

            if key == 'Google': web = driver.find_element(by=By.XPATH, value='//*[@id="tsf"]/div[1]/div[1]/div[2]/button')
            else: web = driver.find_element(by=By.XPATH, value='//*[@id="sb_form_go"]')
            # try:
            web.click()
            # except: pass
            time.sleep(5)
        num = 0


if __name__ == '__main__':
    from temp import Make_Excel, input_data_list, input_data
    xlsx = Make_Excel()
    web = Web_Browser()
    web.get_all_opened_windows()
    # web.switch_window('故障诊断')

    ''' 学术网 '''
    web.func1(xlsx)  # 学术网
    # web.func2(xlsx)  #  青塔网
    # web.func3(xlsx)  #  NSFC官网

    # web.func4(xlsx, )    # goole搜索网


    # xlsx.make_frame()
    # xlsx.save_excel()

    pass


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/461067.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes部署集群

kubernetes部署集群 集群部署获取镜像安装docker[集群]阿里仓库下载[集群]集群部署[集群]集群环境配置[集群]关闭系统Swap[集群]安装Kubeadm包[集群]配置启动kubelet[集群]配置master节点[master]配置使用网络插件[master]node加入集群[node]后续检查[master]测试集群 集群部署…

力扣面试150 两数之和 II - 输入有序数组 双指针 HashMap

Problem: 167. 两数之和 II - 输入有序数组 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution {public int[] twoSum(int[] numbers, int target) {int l 0;int r numbers.length-1;while(l < r){if(numbers[l] numbers[…

Javaweb--CSS

一&#xff1a;概述 CSS &#xff08;Cascading Style Sheet&#xff08;层叠样式表&#xff09;&#xff09;是一门语言&#xff0c;用于控制网页表现。 W3C标准规定了网页是由以下组成&#xff1a; 结构&#xff1a;HTML 表现&#xff1a;CSS 行为&#xff1a;JavaScrip…

git pull 报错: 在签出前,请清理存储库工作树

问题&#xff1a; 使用vscode 用git 拉取代码&#xff0c;提示&#xff1a;在签出前&#xff0c;请清理存储库工作树** 原因&#xff1a; git仓库上的代码和本地代码存在冲突了所以会报这个报错。 解决办法&#xff1a; ①git stash 先将本地修改存储起来 ②git pull 拉取远…

mac redis启动,redis哨兵模式,redis集群的相关命令

Homebrew安装的软件会默认在/usr/local/Cellar/路径下 redis的配置文件redis.conf存放在/usr/local/etc路径下 cd /usr/local/Cellar/redis/7.0.10. 存在 cd /usr/local/opt/redis/bin/redis-server. 目录存在 cd /usr/local/etc/redis.conf 存在。配置文件 复制文件 cp …

蓝桥杯单片机快速开发笔记——矩阵键盘

一、原理分析 二、示例框架 定义了四个位控制变量&#xff0c;用于控制键盘扫描时的行列信号。 在Scan_Keys()函数中&#xff0c;首先设置行列信号&#xff0c;将其中一个行信号置为0&#xff0c;另一个行信号置为1&#xff0c;同时将列信号置为1&#xff0c;用于扫描键盘按键…

LabVIEW电液伺服作动器

LabVIEW电液伺服作动器 随着工业自动化技术的快速发展&#xff0c;电液伺服作动器在各类精密控制领域得到了广泛应用。基于CRIO架构&#xff0c;利用LabVIEW软件开发了一套电液伺服作动器测控系统&#xff0c;实现了高精度的位移同步控制与测量&#xff0c;有效提高了系统的控…

【论文阅读】IEEE Access 2019 BadNets:评估深度神经网络的后门攻击

文章目录 一.论文信息二.论文内容1.摘要2.引言3.主要图表4.结论 一.论文信息 论文题目&#xff1a; BadNets: Evaluating Backdooring Attacks on Deep Neural Networks&#xff08;BadNets:评估深度神经网络的后门攻击&#xff09; 论文来源&#xff1a; 2019-IEEE Access …

力扣映射思辨题:赎金信

思路很简单&#xff1a;查到就改 bool canConstruct(char* ransomNote, char* magazine) {for(long x0;x<strlen(ransomNote);x){for(long y0;y<strlen(magazine);y){if(magazine[y]ransomNote[x]){ransomNote[x]1;magazine[y]1;break;}}}for(long x0;x<strlen(ranso…

Text-to-SQL 工具Vanna | 查看训练数据、删除训练数据

1.查看训练数据vn.get_training_data vn.get_training_data 源码如下&#xff0c;可以看到返回的是df格式的数据 abstractmethoddef get_training_data(self, **kwargs) -> pd.DataFrame:"""Example:pythonvn.get_training_data()This method is used to ge…

如何本地部署SeaFile文件共享服务并实现无公网IP访问内网本地文件

文章目录 1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 现在我们身边的只能设备越来越多&#xff0c…

固态存储是未来|浅析SSD架构的演进与创新技术-2

除了性能和容量这两个最大的诉求外&#xff0c;其他的需求已经成为SSD现场架构的核心竞争力。 一是安全性&#xff1a;随着数据安全威胁日益严重&#xff0c;SSD的安全设计成为关键&#xff0c;包括提供单芯片硬件信任根、遵循FIPS140-3安全标准以及支持一次性可编程位字段来锁…

MATLAB:一些杂例

a 2; b 5; x 0:pi/40:pi/2; %增量为pi/40 y b*exp(-a*x).*sin(b*x).*(0.012*x.^4-0.15*x.^30.075*x.^22.5*x); %点乘的意义 z y.^2; %点乘的意义 w(:,1) x; %组成w&#xff0c;第一列为x w(:,2) y; %组成w&#xff0c;第二列为y w(:,3) z; %组成w&#xff0c;第三列为z…

英国伦敦交易所股票清单列表数据API接口

# Restful API https://tsanghi.com/api/fin/stock/XLON/list?token{token}更新时间&#xff1a;收盘后3~4小时。 更新周期&#xff1a;每天。 请求方式&#xff1a;GET。 # 测试&#xff1a;返回不超过10条数据&#xff08;2年历史&#xff09; https://tsanghi.com/api/fin/…

GPT3.5、GPT4及Midjourney中转接口ChatGPT系统KEY使用方法

很多使用ChatGPT系统、还有SparkAi、NineAi等系统都存在个比较烦的问题&#xff0c;Openai API 3.5KEY 4.0KEY&#xff0c;Midjourney接口KEY都没有一个稳定的购买或者使用渠道。直连KEY买来还得得建立反代主机&#xff0c;Midjourney接口通过MJ-PROXY-PLUS系统折腾了几天也能使…

AlipayHK香港支付宝如何绑定香港卡?

想使用香港支付宝&#xff0c;那需要绑定香港卡&#xff0c;我这里使用的是438357&#xff0c;看下图 开卡地址&#xff0c;点击获取 开卡步骤按照图片步骤即可 这里要注意的是&#xff0c;一定要用香港网络才行&#xff0c;因为每个人的网络环境不一样&#xff0c;自己考虑清…

如何在代理的IP被封后立刻换下一个IP继续任务

目录 前言 1. IP池准备 2. 使用代理IP进行网络请求 3. 处理IP被封的情况 4. 完整代码示例 总结 前言 当进行某些网络操作时&#xff0c;使用代理服务器可以帮助我们隐藏真实IP地址以保护隐私&#xff0c;或者绕过一些限制。然而&#xff0c;经常遇到的问题是代理的IP可能…

qt vs 编程 字符编码 程序从源码到编译到显示过程中存在的字符编码及隐藏的字符编码转换

理解字符编码&#xff0c;请参考&#xff1a;unicode ucs2 utf16 utf8 ansi GBK GB2312 CSDN博客 了解windows字符显示必须了解locale概念 参考&#xff1a;揭密 Windows 上的各种 locale - 知乎 汉字&#xff08;或者说多字节字符&#xff09;的存放需求&#xff0c;是计算…

一文总结CNN中【各类卷积】操作

本文详细总结CNN中各类卷积&#xff0c;旨在指导 domain-specific 更好的模型设计&#xff0c;包括标准卷积&#xff0c;分组卷积&#xff08;Group Conv&#xff09;&#xff0c;深度可分离卷积&#xff08;Depthwise Separable Conv&#xff09;&#xff0c;转置卷积&#xf…

pytorch之诗词生成--2

先上代码: # -*- coding: utf-8 -*- # File : dataset.py # Author : AaronJny # Time : 2019/12/30 # Desc : 构建数据集 from collections import Counter import math import numpy as np import tensorflow as tf import settingsclass Tokenizer:""&…