【问题标题】:Is it possible to auto scroll a website and select items in a list? [closed]是否可以自动滚动网站并选择列表中的项目? [关闭]
【发布时间】:2021-12-30 15:59:00
【问题描述】:

在我花太多时间研究这个之前,我会在这里问这个问题,以确保我正在尝试做的事情是可能的。

背景:我想帮助一位卡车司机朋友。他使用一个调度网站来选择他的货物。该网站列出了所有可用的列表,但不允许他按邮政编码过滤。基本上,他必须手动滚动这个大列表来寻找交货。如果他在他的邮政编码上或周围找到什么东西,他会选择它。

问题:如果匹配,是否可以自动滚动网站、按邮政编码过滤并选择一个项目?

没有可用的 API 可以让我以编程方式执行此操作。所以我虽然可能有一种方法可以使用 JavaScript 滚动网站并根据特定字段(邮政编码)进行选择。

这甚至可能吗?有没有更好的方法来解决这个问题?

回答问题:Selenium Webdriver 可用于此。

 var driver = new ChromeDriver();
            driver.Navigate().GoToUrl("https://en.wikipedia.org/wiki/List_of_most_visited_websites");

            IJavaScriptExecutor js = driver as IJavaScriptExecutor;

            // scroll by element - find element by link text and store in variable "Element"                
            WebElement Element = (WebElement)driver.FindElement(By.LinkText("United States"));
            js.ExecuteScript("arguments[0].scrollIntoView();", Element);
            System.Threading.Thread.Sleep(5000);
            Console.Read();

【问题讨论】:

  • 所有发布的只是程序描述,但这并不能告诉我们您遇到了什么问题。你尝试过什么,遇到过什么烦恼?请edit您的帖子包含valid question,我们可以回答。提醒:确保您知道on-topic 是什么;要求我们为您编写程序、建议和外部链接都是题外话。
  • 这取决于网站的构建方式。一般来说,可以使用 JavaScript 设置输入字段的值并滚动页面。
  • 有可能,分享你尝试过的网站和代码
  • 我还没有尝试过任何东西。我只是想知道是否可以自动滚动网站并在找到特定字段值后停止滚动,仅此而已。
  • @rafaelzm2000:见下文。

标签: javascript python c# html selenium


【解决方案1】:

Selenium webdriver 将允许程序员访问网页并根据字段抓取所需的内容。但是,有些网站禁止抓取数据,这取决于具体的网站/字段。

【讨论】:

  • Selenium Webdriver 成功了。感谢您的帮助。
【解决方案2】:

您可以使用 execute_script 滚动到每个元素,如下所示:

driver.execute_script("arguments[0].scrollIntoView(true);", ele)

其中ele 是一个网络元素。

您可以将上面的行放在 for 循环或无限 while 循环中并滚动直到满足条件。

示例代码:

j = 0
while True:
    ele = driver.find_elements(By.XPATH, "xpath of all row")
    driver.execute_script("arguments[0].scrollIntoView(true);", ele[j])
    #ele[j].text
    #ele[j] will represent an web element, so you can retrieve text form that like above.
    j = j +1
    if ele[j].text == "zip code":
        break
    else:
        continue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2012-02-01
    • 1970-01-01
    • 2011-08-27
    • 2015-03-16
    • 1970-01-01
    相关资源
    最近更新 更多