使用rvest爬取网页<li>元素时的批量独立获取问题
解决rvest批量获取
- 下所有
- 独立文本的方法
你可以直接定位到目标<ol>下的所有<li>元素,再分别提取每个<li>的文本,就能批量得到独立内容,无需逐个指定索引。
方法1:调整XPath直接选中所有
将你的XPath路径末尾加上/li,直接选中目标<ol>下的所有列表项:
html_nodes(page, xpath='//*[@id="main-content"]/div[3]/div/div[3]/div/div/div/ol/li') %>% html_text()
执行后会返回一个字符向量,每个元素对应一个<li>的文本内容。
方法2:使用CSS选择器(更简洁)
CSS选择器语法相对直观,同样可以直接选中目标<ol>下的所有<li>:
html_nodes(page, css='#main-content > div:nth-child(3) > div > div:nth-child(3) > div > div > div > ol > li') %>% html_text()
如果目标<ol>有专属的class或id,还能进一步简化选择器(比如假设该ol的class是program-curriculum,可写成css='.program-curriculum li'),让代码更健壮,避免页面结构微调导致路径失效。
原理说明
之前直接抓取<ol>再调用html_text(),会把<ol>下所有子节点的文本合并成一个字符串;而先选中每个<li>再调用html_text(),会分别提取每个<li>内部的文本,自然得到独立的条目。
内容的提问来源于stack exchange,提问作者léo
相关产品推荐
相关产品推荐

