注意:我之前没有在这里问过问题,并且仍然不确定如何使其清晰易读,因此请让我知道任何困惑或使其更具可读性的提示
我正在尝试从 makeoutclub.com(一个古怪的、现已不复存在的针对另类音乐迷的社交网络,创建于 2000 年左右)的 2004/06 至 2004/09 互联网文件中下载用户信息,这使得它是互联网上最古老的基于个人资料的社交网络之一),使用 r,* 特别是 rcrawler 包。 到目前为止,我已经能够使用该包来获取数据框中的用户名和个人资料链接,使用 xpath 来识别我想要的元素,但不知何故它不适用于个人资料的位置或兴趣部分,两者都只是文本而不是 html 中的其他元素。为了了解我正在谈论的站点/数据,这是我一直在发送 xpath 短信的页面:https://web.archive.org/web/20040805155243/http://www.makeoutclub.com/03/profile/html/boys/2.html
我一直在使用 rcrawler 的 ContentScraper 函数测试我的 xpath 表达式,该函数从需要抓取的网站的一个特定页面中提取与指定 xpath 匹配的一组元素。这是我的功能表达式,它标识网站上的用户名和链接,指定我正在使用的特定页面,并返回一个向量:
testwaybacktable <- ContentScraper(Url = "https://web.archive.org/web/20040805155243/http://www.makeoutclub.com/03/profile/html/boys/2.html", XpathPatterns = c("//tr[1]/td/font/a[1]/@href", "//tr[1]/td/font/a[1]"), ManyPerPattern = TRUE)
这是一个不好的地方,我正在测试“位置”,最终返回一个空向量
testwaybacklocations <- ContentScraper(Url = "https://web.archive.org/web/20040805155243/http://www.makeoutclub.com/03/profile/html/boys/2.html", XpathPatterns = "//td/table/tbody/tr[1]/td/font/text()[2]", ManyPerPattern = TRUE)
另一个不好的,这个在“interests”下寻找文本:
testwaybackint <- ContentScraper(Url = "https://web.archive.org/web/20040805155243/http://www.makeoutclub.com/03/profile/html/boys/2.html", XpathPatterns = "//td/table/tbody/tr[2]/td/font/text()", ManyPerPattern = TRUE)
当我尝试在 Chrome Inspect 中搜索时,我在这里使用的 xpath 表达式似乎选择了正确的元素,但程序似乎没有读取它们。我还尝试为每个字段仅选择一个元素,但它仍然产生一个空向量。我知道这个工具可以读取该网页中的文本——我测试了另一段随机文本——但不知怎的,当我运行这个测试时我什么也没得到。 我的 xpath 表达式有问题吗?我应该使用不同的工具来做到这一点吗? 感谢您的耐心等待!
*这是一个数字人文项目,希望使用一些 NLP 来分析特别是有关性别和性的语言,并与网站上最受欢迎乐队的歌词的一些 NLP 分析进行对话。
最佳答案
虽然回答晚了,但也许还是有帮助的。我也不确定整个 TOS 问题,但我认为这是你要弄清楚的。长话短说......我将尝试解决您问题的技术方面;)
我不熟悉 rcrawler-package。通常我使用 rvest 进行网页抓取,我认为这是一个不错的选择。要获得所需的输出,您必须使用类似的东西
# parameters
url <- your_url
xpath_pattern <- your_pattern
# get the data
wp <- xml2::read_html(url)
# extract whatever you need
res <- rvest::html_nodes(wp,xpath=xpath_pattern)
我认为不可能使用具有多个元素的向量作为模式参数,但您可以为要单独提取的每个模式运行 html_nodes 。
我认为前两个网址/模式应该以这种方式工作。您最后一个网址中的模式似乎有些错误。如果您想提取表格内的文本,它可能应该类似于“//tr[2]/td/font/text()[2]”
关于r - 我如何从 2004 Wayback machine 站点上抓取这段文本/为什么我运行的代码是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60031947/