我想创建一个简单的应用,该应用将在特定页面的Chrome控制台中执行JavaScript命令,并返回输出。

即,我想从当前页面获取所有可访问的链接。我可以通过在Chrome控制台中运行以下命令来做到这一点:

urls = $$('a'); for (url in urls) console.log(urls[url].href);

它将返回一组链接作为输出,我希望能够在我的应用程序中进行处理。

我可以从Chrome控制台手动运行它,但由于要处理很多链接,因此我想自动执行此任务。

伪代码如下所示:
function runCommandOnSite(command, site) { ... }

function main() {
  let site = "facebook.com";
  let command = "urls = $$('a'); for (url in urls) console.log(urls[url].href)";
  let result_links = runCommandOnSite(site, command);
  console.log(result_links);
}

注意:可以从Linux桌面运行的任何编程语言都是可接受的。

最佳答案

听起来您想抓取网页并获取该网页中的所有URL。每当遇到这样的问题时,请始终搜索Web Crawler示例以获取任何首选语言。

下面提供了一些示例,这些示例用于从给定网页中抓取一组URL。当然,您可能必须对输出进行一些过滤。但是,做一些玩,看看...

Python 3-美丽的汤4

from bs4 import BeautifulSoup
from urllib.request import urlopen
import ssl

# to open up HTTPS URLs
gcontext = ssl.SSLContext()

# You can give any URL here. I have given the Stack Overflow homepage
url = 'https://stackoverflow.com'
data = urlopen(url, context=gcontext).read()

page = BeautifulSoup(data, 'html.parser')

for link in page.findAll('a'):
    l = link.get('href')
    print(l)

Java-JSoup

看看this example

节点JS-Cheerio

看看this example

使用Selenium Web驱动程序-对于大多数编程语言

我将不解释此部分,因为它的范围如此之广,超出了此答案的范围。

07-25 23:58