【发布时间】:2021-04-04 21:40:09
【问题描述】:
我正在尝试使用 Scrapy 和 Xpath 从Stanford 网站提取内容。以下行让我得到了我想要的:
response.xpath('//h2[@class="schoolName"]/following-sibling::ul//text()').getall()
但是,列表的输出如下:
[' \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t',
'\n\t\t\t\t\t\tAccounting (ACCT)\n\t\t\t\t\t',
'\n\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t',
'\n\t\t\t\t\t\tAction Learning Programs (ALP)\n\t\t\t\t\t',
'\n\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t',
'\n\t\t\t\t\t\tEconomic Analysis & Policy (MGTECON)\n\t\t\t\t\t',
'\n\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t', '\n\t\t\t\t\t\tFinance
(FINANCE)\n\t\t\t\t\t', '\n\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t',
'\n\t\t\t\t\t\tGSB General & Interdisciplinary (GSBGEN)\n\t\t\t\t\t',
'\n\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t', '\n\t\t\t\t\t\tHuman Resource Management
(HRMGT)\n\t\t\t\t\t', '\n\t\t\t']
很明显,输出中充满了 \n 和 \t 的额外空格。我不想再次遍历列表以删除这些不需要的字符,因为列表很大(为了便于阅读而被截断)。我尝试使用 Xpath 的规范化空间来解决这个问题,但它不起作用。
>>>response.xpath('normalize-space(//h2[@class="schoolName"]/following-sibling::ul//text())').getall()
['']
我做错了什么??
【问题讨论】:
-
你可以尝试在最后使用
.extract() -
提取物也没有运气..
-
另外,我查看了您要抓取的网站的 html。您可以通过添加来更精确地了解要选择的节点:
li/a,例如response.xpath('//h2[@class="schoolName"]/following-sibling::ul/li/a')