gpt4 book ai didi

python - Scrapy 获取跨多行和嵌套元素内的文本

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:58 26 4
gpt4 key购买 nike

我确实在尝试抓取类加罗尔所有工作列表的信息。

网址:https://www.indeed.co.in/jobs?q=software+developer&l=Bengaluru,+Karnataka&start=0

我感兴趣的父 div 的 Xpath:

//div[contains(@class, "jobsearch-SerpJobCard")]

我想提取结构如下的公司名称:

<span class="company">
<a>
Micro Focus
</a>
</span>

还有一些像:

<div>
<span class="company">
SSG <b>Software</b> Systems</span>

</div>

我正在使用一个通用的 Xpath 表达式来抓取这两种标题。我在使用第二种类型时遇到了问题,因为它包含多个转义字符,例如\n,这会反射(reflect)在我的结果中,并且在剥离结果中会产生一个空字符串。

用于提取标题的Xpath:

//div[contains(@class, "jobsearch-SerpJobCard")]//span[@class="company"]/text()

结果:

['\n ', '\n ', '\n ', '\n Client of Analytics Human Capital', '\n Advantage Tech', '\n ', '\n SQUARE', '\n DART', '\n posmab technologies', '\n ', '\n PENTAMOUNT TECHNOLOGIES', '\n ', '\n
MobileComm, Inc.', '\n IGLOBAL IMPACT ITES PVT.LTD.', '\n
', '\n ']

我该怎么做才能摆脱那些多余的“\n”字符?

最佳答案

您可以使用 normalize-space XPath 函数来实现这一点。

>>> fetch('https://www.indeed.co.in/jobs?q=software+developer&l=Bengaluru,+Karnataka&start=0')
2018-12-15 09:47:22 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.indeed.co.in/jobs?q=software+developer&l=Bengaluru,+Karnataka&start=0> (referer: None)
>>> response.xpath('//div[contains(@class, "jobsearch-SerpJobCard")]//span[@class="company"]').xpath('normalize-space()').getall()
['Amazon.com', 'Sabre', 'Altisource Labs', 'CGI', 'Allscripts Solutions', 'Shilpin Consulting', 'Access6 technology', 'CGI Group, Inc.', 'Misys Software Solutions India', 'Siemens AG']

关于python - Scrapy 获取跨多行和嵌套元素内的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53790206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com