【问题标题】:Add contact information to user-agent using selenium chromedriver使用 selenium chromedriver 向用户代理添加联系信息
【发布时间】:2020-07-23 01:58:06
【问题描述】:

我正在完成一个网络抓取项目,我想将我的联系电子邮件添加到用户代理,以便网站管理员想就我正在做的抓取联系我或希望我联系我停下来。

我在用户代理上找到了以下文档:

headers = {
    "User-Agent": "my web scraping program. contact me at admin@domain.com"
}
r = requests.get("http://example.com", headers=headers)

此示例涉及请求而不是 chromedriver。我想知道是否有人知道如何在使用 selenium/chromedriver 时将这种类型的标头信息添加到我的用户代理中。 到目前为止,这是我的代码:

from selenium import webdriver
import os
import re
import time
from webdriver_manager.chrome import ChromeDriverManager

chromedriver_path = os.getcwd() + '/chromedriver'
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('www.example.com')
link_url = driver.find_element_by_tag_name('a')
time.sleep(10)
html = driver.page_source
driver.close()

我不确定如何以及在何处使用我的联系信息定义我的标题。有任何想法吗?谢谢!

【问题讨论】:

    标签: python header selenium-chromedriver contacts user-agent


    【解决方案1】:

    Selenium 实际上并不直接支持请求标头,因为它根本没有 API。

    如果您真的必须使用 selenium 发送标头,您唯一可行的选择是使用 browsermob-proxy:https://github.com/lightbody/browsermob-proxy

    这就是它的样子:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_argument('-start maximized')
    
    
    headers = {'User-Agent': 'webscraper - email'}
    
    server = Server(path='path to browsermob-proxy', options=headers)
    server.start()
    proxy = server.create_proxy().proxy
    chrome_options.add_argument(f'--proxy-server{proxy}')
    
    driver = webdriver.Chrome(options=chrome_options)
    
    driver.get('your URL')
    

    下面的代码只是让 selenium 浏览器窗口打开。 或者,您可以输入“--headless”,以便在运行脚本时不会打开浏览器窗口。

    chrome_options.add_argument('-start maximized')
    

    同样,下面的代码让 chrome webdriver 知道我们要使用刚刚创建的代理服务器。通过代理服务器进行的这种重定向可以让您将标头添加到您的连接中。

    chrome_options.add_argument(f'--proxy-server{proxy}')
    

    【讨论】:

    • 嗨 Timothee,感谢您的编辑,我还是 selenium 的新手,想知道您是否可以澄清 chrome_options.add_arugement(-start 最大化) 和 (f'--proxy-server {proxy}) 指的是?另外为了检查我的理解,我可以将服务器路径定义为 /username/desktop/etc...,对吗?
    • 我更新了我的答案以澄清,是的,服务器路径可以这样定义。
    • 这个不需要browsermox代理,可以通过API在chrome中设置useragent。 chrome_options.add_argument('user-agent=你的信息\自定义用户代理'')
    猜你喜欢
    • 2017-02-01
    • 2015-09-14
    • 1970-01-01
    • 2013-05-02
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 2020-11-05
    相关资源
    最近更新 更多