从同一类别中使用Scrapy获取两个段落中的特定文本。

huangapple go评论65阅读模式
英文:

Get specific text from 2 paragraphs in the same class using Scrapy

问题

我对Scrapy非常陌生,我想要能够使用Scrapy shell提取两个文本段落:“Fintec, Cybersecurity”和“Serie C”。

如果我运行

response.css('div.card-body p.card-text strong::text').get()

我会得到'Secteur',但我正在寻找'Fintec, Cybersecurity'。

对于

response.css('div.card-body p.card-text::text').get()

我得到'/n'。

我注意到如果我使用

response.css('div.card-body p.card-text:nth-child(3)').get()

我会得到

<p class="card-text">
  <strong>Round</strong> : Série C
</p>

而对于

response.css('div.card-body p.card-text:nth-child(2)').get()

我得到

<p class="card-text">
  <strong>Secteur</strong> : Fintech, Cybersecurity
</p>

我如何获得Serie CFintech, Cybersecurity

谢谢

英文:

I'm very new to Scrapy and I want to be able to extract both texts paragraph using Scrapy shell: "Fintec, Cybersecurity" and "Serie C"

从同一类别中使用Scrapy获取两个段落中的特定文本。

If I run

response.css(&#39;div.card-body p.card-text strong::text&#39;).get()

I get 'Secteur' but I'm looking for 'Fintec, Cybersecurity'.

for

response.css(&#39;div.card-body p.card-text::text&#39;).get() 

I get '/n'

I've noticed if I use

response.css(&#39;div.card-body p.card-text:nth-child(3)&#39;).get() 

I get < p class="card-text">\n<strong>Round</strong> : Série C\n < /p>
and for

response.css(&#39;div.card-body p.card-text:nth-child(2)&#39;).get()

I get

< p class="card-text">\n<strong>Secteur</strong> : Fintech, Cybersecurity\n < / p>

How do I get Serie C and Fintech Cybersecurity?

Thank you

答案1

得分: 0

这应该可以工作... &#39;div.card-body p.card-text::text&#39; 你只需要使用 getallextract 方法。

这是我在ipython中做的一个示例:

In [3]: html = '&#39;&#39;&#39;&lt;div class=&quot;card-body&quot;&gt;
   ...:     &lt;h3 class=&quot;card-title mb-1&quot;&gt;L&lt;/h3&gt;
   ...:     &lt;p class=&quot;card-text&quot;&gt;
   ...:         &lt;strong&gt;Secteur&lt;/strong&gt;
   ...:         &quot; : Fintech, Cybersecurity &quot;
   ...:     &lt;/p&gt;
   ...:     &lt;p class=&quot;card-text&quot;&gt;
   ...:         &lt;strong&gt;Round&lt;/strong&gt;
   ...:         &quot; : Serie C &quot;
   ...:     &lt;/p&gt;
   ...:     &lt;p class=&quot;card-text&quot;&gt;
   ...:         &lt;small class=&quot;text-muted&quot;&gt; 2820 votes enregistres &lt;/small&gt;
   ...:     &lt;/p&gt;
   ...: &lt;/div&gt;&#39;&#39;&#39;

In [4]: response = parsel.Selector(html)

In [5]: for p in response.css('&lt;div class=&quot;card-body&quot; p.card-text::text').getall():
   ...:     text = '&#39;&#39;.join(p).strip()
   ...:     print(text)
   ...:

&quot; : Fintech, Cybersecurity &quot;

&quot; : Serie C &quot;
英文:

This should work... &#39;div.card-body p.card-text::text&#39; you just need to use either the getall or extract methods.

Here is an example I did in ipython:

In [3]: html = &#39;&#39;&#39;&lt;div class=&quot;card-body&quot;&gt;
   ...:     &lt;h3 class=&quot;card-title mb-1&quot;&gt;L&lt;/h3&gt;
   ...:     &lt;p class=&quot;card-text&quot;&gt;
   ...:         &lt;strong&gt;Secteur&lt;/strong&gt;
   ...:         &quot; : Fintech, Cybersecurity &quot;
   ...:     &lt;/p&gt;
   ...:     &lt;p class=&quot;card-text&quot;&gt;
   ...:         &lt;strong&gt;Round&lt;/strong&gt;
   ...:         &quot; : Serie C &quot;
   ...:     &lt;/p&gt;
   ...:     &lt;p class=&quot;card-text&quot;&gt;
   ...:         &lt;small class=&quot;text-muted&quot;&gt; 2820 votes enregistres &lt;/small&gt;
   ...:     &lt;/p&gt;
   ...: &lt;/div&gt;&#39;&#39;&#39;

In [4]: response = parsel.Selector(html)

In [5]: for p in response.css(&#39;div.card-body p.card-text::text&#39;).getall():
   ...:     text=&#39;&#39;.join(p).strip()
   ...:     print(text)
   ...:

&quot; : Fintech, Cybersecurity &quot;

&quot; : Serie C &quot;

huangapple
  • 本文由 发表于 2023年7月10日 16:05:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/76651820.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定