如何通过scrapy和python从另一个标记的子标记中提取数据?

2024-09-27 22:20:27 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我要从中提取数据的html代码。但每当我运行时,我得到一些随机值。谁能帮我解决这个问题吗。在

我想提取以下内容:Mumbai, Maharastra, 1958, government, UGC and Indian Institute of Technology, Bombay。在

HTML格式:

<div class="instituteInfo">
    <ul class="clg-info">
        <li>
            <a href="link here" target="_blank">Mumbai</a>,
            <a href="link here" target="_blank">Maharashtra</a>
        </li>
        <li>Estd : <span>1958</span></li>
        <li>Ownership : <span>Government</span></li>
        <li>Approved By : <span>UGC</span></li>
        <li>Affiliated To : <a href="link">Indian Institute of Technology, Bombay</a></li>
</div>

这是scray中parse函数的代码

^{pr2}$

Tags: of代码divherelinkliclassindian
1条回答
网友
1楼 · 发布于 2024-09-27 22:20:27

即使你没有提供很多细节,与手头的问题,如你得到的输出或网站和问题,我愿意投入资金,问题是你在你的项目中提出的流浪者。。。在

你所说的随机/不正确的返回值是否来自运行spider。。。就像在你爬行整个网站目录的不同。。。研究所?这意味着html代码片段只是你要废弃的许多其他页面中的一个??如果是的话。。。在

那么你的问题肯定是射程问题。。。使用范围从同一节点中的其他标记中选择标记。。。但是如果站点中的页面不完全相同,会发生什么呢?范围保持不变,但内容的位置不一样,因此您将无法获得任何值。在

在for循环中。。在

def parse(self, response):
    for students in response.css('div.topBlockInstituteInfoBottom'):

你的css值,我无法验证它是否正确,因为事实上我不知道有问题的网站,但采取了你显示的HTML片段。。。循环中的css值错误。。。在

^{pr2}$

再说一次。。。在

for students in response.css('div.topBlockInstituteInfoBottom'):

看看我要怎么办??应该在循环中使用.instituteInfo。。。在

Written with StackEdit.


更新的答案


正如我所怀疑的,我查看了这个网站,当然…并不是所有关于机构简介的个人页面都会有相同的信息,因为它们的结构会略有不同,但关闭一个节点就足以让你的数据成为垃圾。在

非常细微的区别。。。这就够了

Canyou see the sliglt difference?

这是因为使用xpath是非常关键的,如果您不熟悉的话。。。基本上,你可以使用特殊的语法来进一步锁定你的数据,而不需要任何if、and或buts(如果你做得对,那就是…)

它可以作为结构化数据的正则表达式,如html、xml、markdown等。。。你可以用。。论据?比如包含。。。所以我想进一步说明路径中的哪个链接(当然是href的“a”标记),其中包含单词“Next”我将使用。。。在

//html/body/..../a[contains(., "next")]/@href

你可以直接使用

//a[contains(., "next")]/@href

但是,你能越具体地说明你的内容或节点的路径,你就越不可能陷入混乱。。相反,你的解析。在

对你来说。。。。做这个。没错,虽然我不打算把所有的乐趣都拿走,那是为了学点新东西。。。这是一个人应该看起来像什么。。在

在响应.xpath(“//ul@class='clg-info'/li[包含(,'Ownership')]/span/text().extract()

你不需要在ScrapyShell中检查它的输出,如果你使用任何浏览器开发工具,然后在里面做一个ctrl+f或搜索。。。它应该允许xpath,但是是的…输出是“私有的”。。。。因为我说基本上,在路径/节点级别的'clg info'中,我正在寻找即将到来的li,其中包含pain文本单词的所有权。。。也不一定是完整的词,但是。。。然后就在那里机动。。。你只需要在做的时候看一下html,很明显。在

。。。专业提示。。。我之前给出的关于寻找链接的例子。。。/一个标签,包含单词next。。。你能想想怎么用吗??=)浏览网页可能会很痛苦,但是要知道你的xpath和regex,而且没有你无法解析的内容。。。开枪。。。一旦你学好了,你就可以真正理解如何在网页中消除js的模糊。。用手。。。一个娘娘腔的jnice Stufflol

相关问题 更多 >

    热门问题