python - 使用scrapy提取h2标签下的所有文本
问题描述
我需要搜索具有特定值的 h2 标记并提取其后面的所有文本,直到下一个 h2 标记或页面结尾。所以如果页面是
<h1 id="DDPSupport-InternalResources"><span style="color: rgb(0,51,102);"><strong>Internal Resources</strong></span></h1>
<h2 id="DDPSupport-GeneralInformation">General Information</h2>
<ul><li><a href="/display/ladtechtme/DDP+overview">DDP overview</a></li>
<li><a href="/display/ladtechtme/DDP+Configuration+guide">DDP Config guide</a></li>
<li><a href="/pages/viewpage.action?pageId=1338281922">Custom DPR</a></li>
<li><a href="/display/ladtechtme/Build+custom+package">Build custom package</a></li>
<li><a href="/display/ladtechtme/Unit+testing">Unit testing</a></li>
<li><a href="/display/ladtechtme/FAQ">FAQ </a></li>
<li><a href="/display/ladtechtme/Misc+BKMs">Misc BKMs</a></li></ul>
<h2 id="DDPSupport-UseCases">Use Cases</h2>
<ul><li><a href="/pages/viewpage.action?pageId=1338281922">Custom DPR </a></li>...
,预期输出为
DDP overview
DDP Config guide
Custom DPR
Build custom package
Unit testing
FAQ
Misc BKMs
我正在使用以下代码:
for head in response.xpath("//div[@class='wiki-content']/h2"):
sub=str(head.xpath("text()").extract())
sub = sub.replace("[","")
sub = sub.replace("'","")
sub = sub.replace("]","")
if sub == 'General Information':
lines = head.xpath("//following-sibling::*[count(following-sibling::h2)=1]//text()").extract()
print(str(lines))
我得到了一些结果,但不是想要的结果。我的输出包含下一个 h2 标签的文本。任何帮助,将不胜感激。
解决方案
推荐阅读
- maven - spring-boot-configuration-processor 不适用于 maven 子模块项目
- sql-server - 使用具有多个相同字符的子字符串
- elasticsearch - 我可以逐个集群管理“index.max_result_window”吗?
- java - Hive JDBC - getConnection 失败时的连接泄漏
- spring-boot - 甚至没有发生 JMS 队列侦听器的负载分配
- go - 使用 kubernetes go-client 观看 persistentVolumes
- c# - C# WebClient 请求
- windows - RoboFramework 完成测试执行后,将输出文件夹设置为只读
- python - 多种功能输出的良好设计模式
- vue.js - 如何根据 v-for 中的键更改样式?