gpt4 book ai didi

csv - 如何在scrapy中提取文本以及超链接文本?

转载 作者:行者123 更新时间:2023-12-02 09:20:08 25 4
gpt4 key购买 nike

我想从以下 html 代码中提取:

<li>
<a test="test" href="abc.html" id="11">Click Here</a>
"for further reference"
</li>

我正在尝试执行以下提取命令

response.css("article div#section-2 li::text").extract()

但它只给出“供进一步引用”行预期输出是“单击此处以获取进一步引用”作为一个字符串。这个怎么做?如果存在以下模式,如何修改它以执行相同的操作:

  1. 文本超链接文本
  2. 超链接文本
  3. 文本超链接

最佳答案

至少有几种方法可以做到这一点:

让我们首先构建一个模仿您的响应的测试选择器:

>>> response = scrapy.Selector(text="""<li>
... <a test="test" href="abc.html" id="11">Click Here</a>
... "for further reference"
... </li>""")

第一个选项,对 CSS 选择器进行细微更改。查看所有文本后代,而不仅仅是文本子元素(注意 li::text 伪元素之间的空格):

# this is your CSS select,
# which only gives direct children text of your selected LI
>>> response.css("li::text").extract()
[u'\n ', u'\n "for further reference"\n']

# notice the extra space
# here
# |
# v
>>> response.css("li ::text").extract()
[u'\n ', u'Click Here', u'\n "for further reference"\n']

# using Python's join() to concatenate and build the full sentence
>>> ''.join(response.css("li ::text").extract())
u'\n Click Here\n "for further reference"\n'

另一个选择是使用 XPath 1.0 string() 链接 .css() 调用或normalize-space()在后续的 .xpath() 调用中:

>>> response.css("li").xpath('string()').extract()
[u'\n Click Here\n "for further reference"\n']
>>> response.css("li").xpath('normalize-space()').extract()
[u'Click Here "for further reference"']

# calling `.extract_first()` gives you a string directly, not a list of 1 string
>>> response.css("li").xpath('normalize-space()').extract_first()
u'Click Here "for further reference"'

关于csv - 如何在scrapy中提取文本以及超链接文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43323701/

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