提取 bing 搜索结果的数量

问题描述 投票:0回答:2

我想使用

rvest
进行网页抓取来提取 bing 搜索结果的数量。

我使用以下功能:

BingResults <- function(x) {
    stringr::str_glue('https://www.bing.com/search?q="{x}"') %>% 
        rvest::session() %>% 
        rvest::html_elements(xpath = '//*[@id="b_tween_searchResults"]/span') %>% 
        rvest::html_text() %>% 
        stringr::str_remove_all("Ungefähr|Ergebnisse|results|About| |\\.") %>% 
        as.integer() %>% 
        "/"(1000) %>% 
         as.integer()
}

但是,这对某些单词有效,但对另一些单词无效

BingResults(x = "Diversity")
# 19700
BingResults(x = "Aktie")
# integer(0)

第二个例子失败有什么原因吗?如何使该功能适用于所有可能的搜索词。

r web-scraping rvest
2个回答
0
投票
library(tidyverse)
library(rvest)

bing_results <- function(search_term) {
  str_c("https://www.bing.com/search?q=", search_term) %>%
    read_html() %>%
    html_element(".sb_count , .sb_bp") %>%
    html_text2() %>%
    str_remove_all("[^0-9]") %>%
    as.numeric()
}

bing_results("Aktie")

[1] 7390000

0
投票

您要查找的代码是:

pacman::p_load(tidyverse, rvest)

BingResults <- function(x) {
    str_glue('https://www.bing.com/search?q="{x}"') %>% 
      read_html %>%
      html_nodes('.sb_count') %>%
      html_text %>%
      parse_number %>%
      {. / 1000} %>%
      as.integer
}

我无法重现你的问题,对我来说,

BingResults(x = "Diversity")
BingResults(x = "Aktie")
都返回
NA
。这是因为您从
stringr::str_remove_all("Ungefähr|Ergebnisse|results|About| |\\.") %>%
行得到像“19,700,000”这样的结果,当它转换为整数时,由于逗号的原因,变成了
NA
s。因此,要使此代码正常工作,您可以做的最小更改就是在
str_remove_all()
行的正则表达式中添加一个逗号,它应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.