【问题标题】:Getting email address in web scraping through rvest通过 rvest 在网络抓取中获取电子邮件地址
【发布时间】:2018-04-09 04:00:14
【问题描述】:

您好,我正在尝试通过使用包 rvest 以 R 语言抓取网页来获取有关此网页的少量信息。我得到了名字和一切,但我无法获得电子邮件 ID,即 info@brewhemia.co.uk。如果我在 read_html 中看到文本,我在 html 解析文本中看不到电子邮件 ID。有人可以帮忙吗?我是网络抓取的新手。但我知道 R 语言。

link <- 'https://food.list.co.uk/place/22191-brewhemia-edinburgh/'
page <- read_html(link)
name_html <- html_nodes(page,'.placeHeading')
business_adr <- html_text(adr_html)
tel_html <- html_nodes(page,'.value')
business_tel <- html_text(tel_html)

电子邮件 ID 在“a”html 标记中,但我无法提取它。

【问题讨论】:

  • 因为是js动态创建的。检查页面来源。
  • 很想听听是否有帮助!

标签: r screen-scraping


【解决方案1】:

这里需要一个 javascript 引擎来处理 js 代码。幸运的是,R 得到了V8

安装V8包后修改你的代码:

library(rvest)
library(V8)

link <- 'https://food.list.co.uk/place/22191-brewhemia-edinburgh/'
page <- read_html(link)
name_html <- html_nodes(page,'.placeHeading')
business_adr <- html_text(adr_html)
tel_html <- html_nodes(page,'.value')
business_tel <- html_text(tel_html)

emailjs <- page %>% html_nodes('li') %>% html_nodes('script') %>% html_text()
ct <- v8()

read_html(ct$eval(gsub('document.write','',emailjs))) %>% html_text()

输出:

> read_html(ct$eval(gsub('document.write','',emailjs))) %>% html_text()
[1] "info@brewhemia.co.uk"

【讨论】:

  • ct 报错。 read_html(ct$eval(gsub("document.write", "", emailjs))) 中的错误:找不到对象'ct'
  • 我的错,错过了。请使用ct &lt;- v8()查看更新的答案
  • 运行时出现错误,如下所示。 xml2::xml_text(x, trim = trim) 中的错误:找不到对象“adr_html”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多