python爬虫进行自动化接管浏览器-躲避知乎1001

该博客介绍了一种使用Python的Selenium库进行网页自动化的方法,包括配置Chrome浏览器驱动、设置远程调试端口、获取cookies以及进行页面元素交互。通过示例代码展示了如何搜索知乎并保存cookies信息。

先将所用的浏览器驱动的路径配置到系统环境变量中

再在管理员权限打开的cmd中输入 C:\Users\DELL>chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\Users\DELL\Desktop\PrePare\知乎"

import time
import json

from lxml import etree
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from time import sleep


class ZhiHu:
    def __init__(self):
        self.url = 'https://www.zhihu.com/'
        self.chrome_options = Options()
        self.chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")  # 前面设置的端口号
        self.browser = webdriver.Chrome(executable_path=r'chromedriver.exe',
                                        options=self.chrome_options)  # executable执行webdriver驱动的文件

    def get_start(self):
        self.browser.get(self.url)
        info = self.browser.get_cookies()  # 获取cookies
        # print(info)
        with open(r".\info.json", 'w', encoding='utf-8') as f:
            f.write(json.dumps(info))
        #     定位输入框并输入搜索信息
        sleep(2)
        text = self.browser.find_element_by_id('Popover1-toggle')
        sleep(1)
        text.send_keys('想要搜索的信息')
        sleep(1)
        a_tag = self.browser.find_element_by_xpath(
            '//*[@id="root"]/div/div[2]/header/div[1]/div[1]/div/form/div/div/label/button')
        a_tag.click()
        page_source = self.browser.page_source
        print(len(page_source))


if __name__ == '__main__':
    zhihu = ZhiHu()
    zhihu.get_start()

import configparser import datetime from datetime import datetime from time import sleep from selenium.webdriver.chrome.service import Service from selenium.webdriver import Chrome,ChromeOptions from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import warnings inifile = configparser.ConfigParser() inifile.read('user_set.ini', 'UTF-8') URL = inifile['RTS_Alert_summary']['RTS_URL'] USER = inifile['RTS_Alert_summary']['RTS_USER'] PD = inifile['RTS_Alert_summary']['RTS_PD'] MODEL = str(inifile['RTS_Alert_summary']['RTS_MODEL']) WAITTIME = 1 def main(): #忽略警告 warnings.filterwarnings("ignore") # 创建一个驱动 service = Service('chromedriver.exe') options = ChromeOptions() # 伪造浏览器 options.add_experimental_option('excludeSwitches', ['enable-automation','enable-logging']) options.add_experimental_option('useAutomationExtension', False) # 创建一个浏览器 driver = Chrome(service=service,options=options) # 绕过检测 driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => false }) """ }) # 打开登录页面 driver.get(URL) sleep(30) driver.maximize_window() wait = WebDriverWait(driver, 20) wait.until(EC.presence_of_all_elements_located) # 点击搜索框 #driver.find_element(By.ID,'Popover1-toggle').click() # 输入内容 username = driver.find_element(By.NAME, "Username") username.send_keys(USER, Keys.ENTER) password = driver.find_element(By.NAME, "Password") password.send_keys(PD, Keys.ENTER) submit_check = driver.find_element(By.XPATH, "/html/body/div[2]/div/div/div/div/div[2]/div/div/form/div/div[2]/button") submit_check.click() ab_wait = WebDriverWait(driver, 10) driver.quit() if __name__ == '__main__': # 创建文件存储数据 main()
06-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ad_m1n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值