首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从2004年的Wayback机器站点中刮取这段文本/为什么我运行的代码出错?

如何从2004年的Wayback机器站点中刮取这段文本/为什么我运行的代码出错?
EN

Stack Overflow用户
提问于 2020-02-03 00:45:40
回答 1查看 469关注 0票数 2

注:我以前在这里没有问过任何问题,我仍然不知道如何使这个问题清晰易懂,所以请告诉我关于如何提高这个可读性的任何混淆或提示。

我试图从2004/06年至2004/09年的互联网档案中下载用户信息( makeoutclub.com是一个古怪的、现已不复存在的社交网络,它是2000年创建的,它是互联网上最古老的基于个人资料的社交网络之一),它使用r,*特别是爬虫包。到目前为止,我已经能够使用这个包在dataframe中获取用户名和配置文件链接,使用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)

另一个坏消息是,这个人正在寻找“兴趣”下的文本:

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)

我在这里使用的xpath表达式在我尝试在Chrome检查中搜索元素时,似乎选择了正确的元素,但是程序似乎没有读取它们。我还尝试为每个字段只选择一个元素,但它仍然产生了一个空向量。我知道这个工具可以在这个网页上读取文本--我测试了另一个随机的文本--但是当我运行这个测试时,不知怎么的,我什么也没有得到。我的xpath表达式有什么问题吗?我应该用不同的工具来做这件事吗?谢谢你的耐心!

*这是为一个数字人文项目,希望使用一些nlp来分析特别是关于性别和性的语言,与一些nlp分析网站上最受欢迎的乐队的歌词。

EN

回答 1

Stack Overflow用户

发布于 2020-06-19 09:57:02

一个迟来的答案,但也许会有所帮助。另外,我不确定整个TOS问题,但我认为这是你的解决办法。长话短说..。我只想谈谈你的问题的技术方面;)

我对爬虫包不熟悉。通常情况下,我使用rvest进行网络抓取,我认为这是一个不错的选择。要实现所需的输出,您必须使用以下内容

代码语言:javascript
复制
# 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。

我认为前两个urls/模式应该这样工作。你上一个网址里的模式似乎是错的。如果要提取表中的文本,可能应该是“//TR2/td/字体/ text ()2”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60031947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档