重装了电脑,重装python selenium控制已打开的浏览器
1、pip install selenium
2、从https://npm.taobao.org/mirrors/chromedriver/ 下载相应版本的 chromedriver,并设置环境变量,本机chrome.exe所在目录也加入环境变量,(如果命令行启动chrome有问题,复制并重命名为chrome1.exe)
3、命令行启动浏览器(如果目录C:\selenum\setting不存在,自己建一个)
1 | chrome1.exe --remote-debugging-port=5555 --user-data-dir= "C:\selenum\setting" |
-remote-debugging-port值,可以指定任何打开的端口。 -user-data-dir标记,指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。
4、操作指定浏览器
1 2 3 4 5 6 7 8 9 | # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common. by import By options = webdriver.ChromeOptions() options.debugger_address = "127.0.0.1:5555" driver = webdriver.Chrome(options=options) driver. get ( 'http://www.baidu.com' ) |
使用过程中发现selenium新语法变化大,只好参考官方文档:https://www.selenium.dev/documentation/
参考:https://www.cnblogs.com/pythonywy/p/13805061.html
补充:写了一段烂代码,抓取内网json格式2000条信息足够用了
# -*- coding: utf-8 -*- #接管已经打开的浏览器,便于在登录状态下抓取 #命令行执行:chrome.exe --remote-debugging-port=5555 --user-data-dir="C:\selenum\setting" (失败的话复制为chrome1.exe再执行) #from time import sleep #from selenium.webdriver.common.by import By #from selenium.webdriver.support.wait import WebDriverWait from selenium import webdriver from bs4 import BeautifulSoup import json options = webdriver.ChromeOptions() options.debugger_address = "127.0.0.1:5555" driver = webdriver.Chrome(options=options) # 两个同时设置才行 # 实现效果:加载状态停止,进行代码下一步操作 driver.set_page_load_timeout(10) driver.set_script_timeout(10) # 这两种设置都进行才有效 with open("e:/2775.txt", 'a') as file_object: for x in range(1,2776):#2775 id='http://192.1.1.9/api/Title?id='+str(x) driver.get(id) #sleep(3) driver.implicitly_wait(9000) try: html = driver.page_source string = BeautifulSoup(html,"html.parser").get_text() dic = json.loads(string) p0=dic.get('id') p1=dic.get('result').get('code') p2str=dic.get('result').get('requestParams') p2=json.loads(p2str).get('lastname') p3=dic.get('result').get('sex').get('name') p4str=dic.get('result').get('orginfo') p4a = BeautifulSoup(p4str,"html.parser") p4=p4a.a.text pp= p0 +" "+ p1 +" "+p2+" "+p3 +" "+p4 + "\n" file_object.write(pp) except: # 通过js来stop,即可执行后续动作 #driver.execute_script("window.stop()") pass driver.quit()
补充,后来发现少了一个字段,p4a中有2个a标签,要取第二个,增加一行:p5=p4a.a.next_sibling.next_sibling.text
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-08-24 rust 裸指针
2021-08-24 rust 的奇葩点(.和..)语法小记
2016-08-24 使用rem缩放网页的javascript代码