从HTML源代码中删除链接(网格内)-使用R(首选)或Python

从HTML源代码中删除链接(网格内)-使用R(首选)或Python,python,html,r,Python,Html,R,在作为新问题发布之前,详细检查了几个帖子。希望这不是复制品 来自asker的提示:我对HTML不太了解,可以说对R的了解一般 我有一个HTML源代码,我需要使用R(首选)或Python从中提取链接 编辑:2017年7月28日 我正在寻找的链接位于的嵌套结构中 例如: ==0美元 == $0 使用R的rvest这应该足够简单。根据您发布的有限示例,这应该是可行的: library(rvest) read_html(text) %>% html_nodes('#tabbed_folde

在作为新问题发布之前,详细检查了几个帖子。希望这不是复制品

来自asker的提示:我对HTML不太了解,可以说对R的了解一般

我有一个HTML源代码,我需要使用R(首选)或Python从中提取链接

编辑:2017年7月28日

我正在寻找的链接位于的嵌套结构中

例如:

==0美元
== $0

使用
R
rvest
这应该足够简单。根据您发布的有限示例,这应该是可行的:

library(rvest)

read_html(text) %>%
  html_nodes('#tabbed_folder_content') %>%
  html_nodes('a') %>%
  html_attr('href')
#> [1] "https://etc.etc.aspx?id=XXXXX&type=r"
#> [2] "https://etc.etc.aspx?id=YYYYY&type=r"
与:


text使用
R
rvest
这应该足够简单。根据您发布的有限示例,这应该是可行的:

library(rvest)

read_html(text) %>%
  html_nodes('#tabbed_folder_content') %>%
  html_nodes('a') %>%
  html_attr('href')
#> [1] "https://etc.etc.aspx?id=XXXXX&type=r"
#> [2] "https://etc.etc.aspx?id=YYYYY&type=r"
与:


text我喜欢GGamba的答案,但我自己更喜欢使用readLines函数,并通过regex手动完成。通过这种方式,您可以非常明确地指定要提取的URL,以防这些节点中存在其他URL。另外,我从来没有和我自己的任何运气,哈哈

text <- '<div id="tabbed_folder_content"> == $0
  <div id="wholeSlidesGrid" class=folderContentGrid active-grid" style> == $0
<div id="pxl-ag-grid" style="height:100%; width: 100%;" class="ag-material">
<a href="https://etc.etc.aspx?id=XXXXX&type=r" tabindex="-1">" P_xxxxxx
</a>
<a href="https://etc.etc.aspx?id=YYYYY&type=r" tabindex="-1">" P_xxxxxx
</a>
</div>
</div>
</div>'

write.csv(text, 'text.txt', row.names = FALSE)
或者网站格式上的这个正则表达式也会产生相同的结果

grep('.*etc\\.etc\\.aspx.*', text2, value = TRUE) %>% 
    gsub('.*a href=\"\"(.*)\"\"\\s*tabindex=.*', '\\1', .)
如果您只能通过使用grep和value=FALSE(生成该行的索引)直接识别要拉取的行上方的行,那么这将非常有用

例如:

index <- grep('<div id=\"\"pxl-ag-grid\"\" style=\"\"height:100%; width: 100%;\"\" class=\"\"ag-material\"\">', text2, value = FALSE)

text2[index + 1]

index我喜欢GGamba的答案,但我自己更喜欢使用readLines函数进行刮取,并通过regex手动执行。通过这种方式,您可以非常明确地指定要提取的URL,以防这些节点中存在其他URL。另外,我从来没有和我自己的任何运气,哈哈

text <- '<div id="tabbed_folder_content"> == $0
  <div id="wholeSlidesGrid" class=folderContentGrid active-grid" style> == $0
<div id="pxl-ag-grid" style="height:100%; width: 100%;" class="ag-material">
<a href="https://etc.etc.aspx?id=XXXXX&type=r" tabindex="-1">" P_xxxxxx
</a>
<a href="https://etc.etc.aspx?id=YYYYY&type=r" tabindex="-1">" P_xxxxxx
</a>
</div>
</div>
</div>'

write.csv(text, 'text.txt', row.names = FALSE)
或者网站格式上的这个正则表达式也会产生相同的结果

grep('.*etc\\.etc\\.aspx.*', text2, value = TRUE) %>% 
    gsub('.*a href=\"\"(.*)\"\"\\s*tabindex=.*', '\\1', .)
如果您只能通过使用grep和value=FALSE(生成该行的索引)直接识别要拉取的行上方的行,那么这将非常有用

例如:

index <- grep('<div id=\"\"pxl-ag-grid\"\" style=\"\"height:100%; width: 100%;\"\" class=\"\"ag-material\"\">', text2, value = FALSE)

text2[index + 1]

index能否添加您尝试提取链接的代码段?您使用的选择器可能有问题。我建议您使用来帮助您选择正确的元素Selector这里似乎与javascript无关我安装了SelectorGadget,它似乎很有用。我正在寻找的链接位于“div a”中,如果这样做有意义的话,您可以添加您尝试提取链接的代码段吗?您使用的选择器可能有问题。我建议您使用来帮助您选择正确的元素Selector这里似乎与javascript无关我安装了SelectorGadget,它似乎很有用。我要找的链接是在“diva”中,如果这有意义的话,请回答。我得到的结果是“字符(0)”。我认为这是因为对象“文本”的赋值。可能误导了你。请查看更新的问题更新的问题不完整,html结构不正确(
div
s应关闭,并且
href
属性缺少
=
)。我的答案仍然有效,您可以使用
html\u节点
定位您感兴趣的节点(这里可能会对您有所帮助),然后使用
html\u attr('href')
提取链接,谢谢您的输入。非常感谢,我能够使用SelectorGadget。上面的代码工作正常,但我需要登录到我试图从中提取链接的页面。这就是为什么我仍然无法抓取我想要的链接。但我觉得这个问题得到了恰当的回答。所以,谢谢!谢谢你的回答。我得到的结果是“字符(0)”。我认为这是因为对象“文本”的赋值。可能误导了你。请查看更新的问题更新的问题不完整,html结构不正确(
div
s应关闭,并且
href
属性缺少
=
)。我的答案仍然有效,您可以使用
html\u节点
定位您感兴趣的节点(这里可能会对您有所帮助),然后使用
html\u attr('href')
提取链接,谢谢您的输入。非常感谢,我能够使用SelectorGadget。上面的代码工作正常,但我需要登录到我试图从中提取链接的页面。这就是为什么我仍然无法抓取我想要的链接。但我觉得这个问题得到了恰当的回答。所以,谢谢!谢谢你的回答。我得到的结果是“字符(0)”。我认为这是因为对象“文本”的赋值。可能误导了你。请注意更新的问题您是否输入了文本,将其作为文本文件输出,然后在该文本文件上读取行?如果是这样,你能把text2的输出放在这里看看它是什么样子吗?例如:[5]“\”\“tabindex=\“\”-1\“\”>\“\”P\uxxxxxx“[6]”您可能需要调整正则表达式以找到正确的行并提取正确的信息。谢谢您的回答。我得到的结果是“字符(0)”。我认为这是因为对象“文本”的赋值。可能误导了你。请注意更新的问题您是否输入了文本,将其作为文本文件输出,然后在该文本文件上读取行?如果是这样,你能把text2的输出放在这里看看它是什么样子吗?例如:[5]“\”\“tabindex=\“\”-1\“\”>\“\”P\uxxxxxx“[6]”您可能需要调整正则表达式以找到正确的行并提取正确的信息。