Python 3.x xpath连接来自多个python元素的文本
您好,我有一些来自此网站的html文件: 但它只返回a/text()。 你能帮我做这件事吗?Python 3.x xpath连接来自多个python元素的文本,python-3.x,xpath,Python 3.x,Xpath,您好,我有一些来自此网站的html文件: 但它只返回a/text()。 你能帮我做这件事吗? 感谢您尝试在没有范围的情况下搜索span/text()。在这部分查询的开头添加/,在下面的列表中: ('//td[@class="name table-participant"]/a/text() | //span/text()').extract() 但我强烈建议使用以下决定: ('//td[@class="name table-participant"]//*[self::a/ancestor:
感谢您尝试在没有范围的情况下搜索
span/text()
。在这部分查询的开头添加/
,在下面的列表中:
('//td[@class="name table-participant"]/a/text() | //span/text()').extract()
但我强烈建议使用以下决定:
('//td[@class="name table-participant"]//*[self::a/ancestor::td or self::span]/text()').extract
对于仅从您选择的
td
-scope获取span,我假设您正在使用Scrapy来刮取HTML
从示例HTML的结构来看,您似乎希望获得锚元素的文本,因此需要迭代这些文本
只有这样,才能剥离并连接锚元素的文本子节点,以获得格式正确的字符串。引号的不一致使用会带来额外的复杂性,但以下几点应该会让你有所收获
from scrapy.selector import Selector
HTML="""
<td class="name table-participant">
<a href="/soccer/argentina/superliga/independiente-san-martin-tIuN5Umrd/">
<span class="bold">Independiente</span>
"- San Martin T."
</a>
</td>
<td class="name table-participant">
<a href="/soccer/argentina/superliga/lanus-huracan-xIDIe0Gr/">
"Lanus - "
<span class="bold">Huracan</span>
</a>
</td>
<td class="name table-participant">
<a href="/soccer/argentina/superliga/rosario-central-colon-santa-fe-Q1Ye9Jpr/">Rosario Central - Colon Santa FE</a>
</td>
"""
def strip_and_join(x):
l=[]
for s in x:
# strip whitespace and quotes
s = s.strip().strip('"').strip()
# drop now empty strings
if s:
l.append(s)
return " ".join(l)
for x in Selector(text=HTML).xpath('//td[@class="name table-participant"]/a'):
print strip_and_join(x.xpath('.//text()').extract())
从scrapy.selector导入选择器
HTML=”“”
"""
def带_和_连接(x):
l=[]
对于x中的s:
#删除空格和引号
s=s.strip().strip(“”).strip()
#现在删除空字符串
如果是:
l、 附加
返回“”连接(l)
对于选择器中的x(text=HTML).xpath('//td[@class=“name table participant”]/a'):
打印条带和连接(x.xpath('.//text()').extract())
请注意,为了清晰起见,我没有将代码压缩到单个列表理解中,尽管这当然是可能的
('//td[@class="name table-participant"]//*[self::a/ancestor::td or self::span]/text()').extract
from scrapy.selector import Selector
HTML="""
<td class="name table-participant">
<a href="/soccer/argentina/superliga/independiente-san-martin-tIuN5Umrd/">
<span class="bold">Independiente</span>
"- San Martin T."
</a>
</td>
<td class="name table-participant">
<a href="/soccer/argentina/superliga/lanus-huracan-xIDIe0Gr/">
"Lanus - "
<span class="bold">Huracan</span>
</a>
</td>
<td class="name table-participant">
<a href="/soccer/argentina/superliga/rosario-central-colon-santa-fe-Q1Ye9Jpr/">Rosario Central - Colon Santa FE</a>
</td>
"""
def strip_and_join(x):
l=[]
for s in x:
# strip whitespace and quotes
s = s.strip().strip('"').strip()
# drop now empty strings
if s:
l.append(s)
return " ".join(l)
for x in Selector(text=HTML).xpath('//td[@class="name table-participant"]/a'):
print strip_and_join(x.xpath('.//text()').extract())