为了账号安全,请及时绑定邮箱和手机立即绑定

如何抓取没有引用或名称属性的项目?

如何抓取没有引用或名称属性的项目?

杨魅力 2022-01-18 16:43:12
我真的是scrapy scrape的新手,我尝试了基本代码,但这有点独特,我在这里尝试了不同的方法。我怎样才能在这里获得喜欢、喜欢和信息丰富的数量 https://teslamotorsclub.com/tmc/threads/tesla-tsla-the-investment-world-the-2019-investors-roundtable.139047/这是我的代码<ul class="dark_postrating_outputlist"><li><i class="fa fa-info-circle"></i> Informative x <strong>1</strong></li><li><i class="fa fa-thumbs-o-up"></i> Like x <strong>1</strong></li></ul>我想得到里面的特定项目我试过这个response.css('ul.dark_postrating_outputlist i.fa.fa-thumbs-o-up strong::text').extract_first()但它不起作用,请问有什么想法吗?谢谢
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

尝试以下操作以获取所需的内容:


import scrapy


class TeslamotorsclubSpider(scrapy.Spider):

    name = "teslamotorsclub"

    start_urls = ["https://teslamotorsclub.com/tmc/threads/tesla-tsla-the-investment-world-the-2019-investors-roundtable.139047/"]


    def parse(self, response):

        for item in response.css("[id^='fc-post-']"):

            author = item.css(".author::text").get()

            like = item.css(".fa-thumbs-o-up + strong::text").get()

            love = item.css(".fa-heart-o + strong::text").get()

            informative = item.css(".fa-info-circle + strong::text").get()

            yield {"author":author,"like":like,"love":love,"informative":informative}

部分输出:


{'author': 'Unpilot', 'like': '1', 'love': '4', 'informative': '1'}

{'author': 'UnknownSoldier', 'like': '7', 'love': '2', 'informative': '1'}

{'author': 'SpaceCash', 'like': '2', 'love': '15', 'informative': '2'}

{'author': 'gene', 'like': '45', 'love': '18', 'informative': '1'}

{'author': 'engle', 'like': '31', 'love': '5', 'informative': '15'}

{'author': 'Unpilot', 'like': '11', 'love': '3', 'informative': None}

{'author': 'SebastianR', 'like': '3', 'love': None, 'informative': None}

{'author': 'Buckminster', 'like': '1', 'love': '4', 'informative': None}


查看完整回答
反对 回复 2022-01-18
?
四季花海

TA贡献1811条经验 获得超5个赞

您可以添加一些更具体的选择器来分隔“喜欢”和“信息量”数据。检查这个例子:


>>> txt = """<ul class="dark_postrating_outputlist">

...  <li>

...  <i class="fa fa-info-circle"></i> Informative x <strong>1</strong>

...  </li>

...  <li> 

...  <i class="fa fa-thumbs-o-up"></i> Like x <strong>2</strong>

...  </li>

...  </ul>"""

>>> from scrapy import Selector

>>> sel = Selector(text=txt)

>>> sel.css('ul.dark_postrating_outputlist li:contains("Informative") strong::text').get()

u'1'

>>> sel.css('ul.dark_postrating_outputlist li:contains("Like") strong::text').get()

u'2'

在这里您可以单独获取您的号码。


查看完整回答
反对 回复 2022-01-18
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

使用 XPath 而不是 CSS:

response.xpath('//ul[@class="dark_postrating_outputlist"]/li[//i[contains()"fa-thumbs-o-up"]]/strong/text()').get()



查看完整回答
反对 回复 2022-01-18
  • 3 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信