pu369com

重装了电脑,重装python selenium控制已打开的浏览器

1、pip install selenium

2、从https://npm.taobao.org/mirrors/chromedriver/ 下载相应版本的 chromedriver,并设置环境变量,本机chrome.exe所在目录也加入环境变量,(如果命令行启动chrome有问题,复制并重命名为chrome1.exe)

3、命令行启动浏览器(如果目录C:\selenum\setting不存在,自己建一个)

chrome1.exe --remote-debugging-port=5555 --user-data-dir="C:\selenum\setting"

-remote-debugging-port值,可以指定任何打开的端口。 -user-data-dir标记,指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。

4、操作指定浏览器

# -*- 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

posted on 2022-08-24 16:42  pu369com  阅读(302)  评论(0编辑  收藏  举报

导航