当前位置: 首页 > 知识库问答 >
问题:

在抓取Web时定义用户代理字符串Selenium WebDriver

程彭祖
2023-03-14

初始化类时,我的实现代码如下。执行以下操作时发生错误。

FirefoxOptions options = new FirefoxOptions();
                         ^
SyntaxError: invalid syntax

请帮助初始化具有用户代理的 Web 驱动程序。我希望我能避免机器人自然刮擦。使用: “Mozilla/5.0 (视窗 NT 6.1;赢64;x64;rv:47.0) 壁虎/20100101火狐/47.0“ 作为代理

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
from bs4 import BeautifulSoup
import pandas as pd
class DataExtract:
    def __init__(self):
        FirefoxOptions options = new FirefoxOptions();
        String userAgent = ""Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0";
        options.addPreference("general.useragent.override",userAgent);
        WebDriver webDriver = new FirefoxDriver(options);
        options.add_argument('--allow-running-insecure-content')
        options.add_argument('--ignore-certificate-errors')
        self.driver = webdriver.PhantomJS(executable_path=r"C:/Pathtoexec/phantomjs/bin/phantomjs.exe")
        self.accept_untrusted_certs = True

共有1个答案

鲁波光
2023-03-14

经过一番冲浪,我发现了适合我的东西。请建议我如何检查是否相应地设置了Web代理。

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from time import sleep
from bs4 import BeautifulSoup
import pandas as pd

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 "
"(KHTML, like Gecko) Chrome/15.0.87")

driver = webdriver.PhantomJS(desired_capabilities=dcap,executable_path=r"C:/PathtoExec/phantomjs.exe")
driver.get("https://www.webpagecontainingtables.com")
soup=BeautifulSoup(driver.page_source,'lxml')
table = soup.find_all('table')[4]
df = pd.read_html(str(table),header=0)
print(df)
 类似资料:
  • 我正在使用React中的API,并且正在从JSONendpoint下拉一些数据。 作为请求的一部分,我想发送一个自定义字符串。目前,当我检查我的请求时,UA字符串是: 因为我在每个请求中都会使用标题,所以我想我应该将附加到headers对象,就像在网上的各个地方所说的那样: 但这行不通。我有一种感觉,这是因为获取api中的一个错误,正如这里、这里和这里所报告的。 有人知道如何使用将UA作为

  • HTTP 规范(包括1.0 和1.1 版)明确规定,浏览器应该发送简短的用户代理字符串,指明浏览器的名称和版本号。RFC 2616(即HTTP 1.1 协议规范)是这样描述用户代理字符串的:“产品标识符常用于通信应用程序标识自身,由软件名和版本组成。使用产品标识符的大多数领域也允许列出作为应用程序主要部分的子产品,由空格分隔。按照惯例,产品要按照相应的重要程度依次列出,以便标识应用程序。” 上述规

  • 问题内容: 我知道如何用以下方法覆盖字符串类: 但是,如何在str不隐式定义类的情况下使用此类而不是内置UserString类?明确地说,我想要这样: 问题答案: 这不可能。您尚未覆盖字符串类。 您不能覆盖类。您可以覆盖方法。您所做的是定义一个类,并且仅覆盖其str()方法。 但是你可以做这样的事情… 输出: 覆盖过去!

  • 考虑到历史原因以及现代浏览器中用户代理字符串的使用方式,通过用户代理字符串来检测特定的浏览器并不是一件轻松的事。因此,首先要确定的往往是你需要多么具体的浏览器信息。一般情况下,知道呈现引擎和最低限度的版本就足以决定正确的操作方法了。例如,我们不推荐使用下列代码: if (isIE6 || isIE7) { //不推荐!!! //代码 } 这个例子是想要在浏览器为IE6 或IE7 时执行相应

  • 主要内容:直接定义字符串,使用 String 类定义字符串是 Java 中特殊的类,使用方法像一般的基本数据类型,被广泛应用在 Java 编程中。Java 没有内置的字符串类型,而是在标准 Java 类库中提供了一个 String 类来创建和操作字符串。 在 Java 中定义一个字符串最简单的方法是用双引号把它包围起来。这种用双引号括起来的一串字符实际上都是 String 对象,如字符串“Hello”在编译后即成为 String 对象。因此也可以通

  • 问题内容: 我目前正在处理给我的一个旧项目,它目前使用Java swing并且具有基本的GUI。它具有一个ColorPane,它可以扩展Jtextpane来更改所选文本的颜色。 它使用这种方法 说那个字符串=“ Hello World!” 你好颜色是绿色世界是黑色。如何根据Jtextpane的颜色来获取Hello。我尝试了笨拙的方式,即在更改颜色时只存储所选单词,但是有一种方法可以一次性获取所有绿