scrapy 我无法通过webscraping获取href的值,字段显示为“none”

mrphzbgm  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(147)

我正在尝试用scrapy做一个网页抓取,但是当我试图从href中获取文本时,它显示为“none”,有人能帮助我吗?
我需要得到 “sinonimos”班的学生
页面、值 我想得到的是这些:
image

代码:

import scrapy

class SinonimoSpider(scrapy.Spider):
    name = 'sinonimo'
    start_urls = ['https://www.sinonimos.com.br/pedido/']
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.2840.71 Safari/539.36'

    def parse(self, response):
        for filmes in response.css('.sinonimo'):
            yield{
                'sinonimo': filmes.css('.sinonimo a::text').get()

            }

结果:

.........
........
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': None}
2022-08-04 00:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
........
........
2exbekwf

2exbekwf1#

当你写for filmes in response.css('.sinonimo'):的时候,你已经在为“.sinonimo”做循环了。它失败了,因为你试图再做一次,它还包括了所有包含你需要的单词的链接标记。仅仅一个::text就足以得到所有的单词。

import scrapy
import requests
from scrapy.selector import Selector

class SinonimoSpider(scrapy.Spider):
    name = 'sinonimo'
    start_urls = ['https://www.sinonimos.com.br/pedido/']
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.2840.71 Safari/539.36'}

    def get_url(self, url):
        return Selector(requests.get(url, headers=self.headers))

    def parse(self, response):
        for filmes in response.css('.sinonimo'):
            # get the text of all links with class 'sinonimo'
            yield{
                'sinonimo': filmes.css('::text').extract_first()

            }

test = SinonimoSpider()
for word in test.parse(test.get_url('https://www.sinonimos.com.br/pedido/')):
    print(word)

输出量:

{'sinonimo': 'encomenda'}
{'sinonimo': 'pacote'}
{'sinonimo': 'volume'}
{'sinonimo': 'item'}
{'sinonimo': 'objeto'}
{'sinonimo': 'produto'}
{'sinonimo': 'unidade'}
{'sinonimo': 'embalagem'}
{'sinonimo': 'embrulho'}
{'sinonimo': 'carga'}
{'sinonimo': 'fardo'}
{'sinonimo': 'maço'}
{'sinonimo': 'rolo'}
{'sinonimo': 'bala'}
{'sinonimo': 'cartucho'}
{'sinonimo': 'envoltório'}
{'sinonimo': 'invólucro'}
{'sinonimo': 'solicitação'}
{'sinonimo': 'petição'}
{'sinonimo': 'requerimento'}
{'sinonimo': 'requisição'}
{'sinonimo': 'ordem'}
{'sinonimo': 'pedimento'}
{'sinonimo': 'reclamação'}
{'sinonimo': 'recurso'}
{'sinonimo': 'pretensão'}
{'sinonimo': 'demanda'}
{'sinonimo': 'exigência'}
{'sinonimo': 'reclamo'}
{'sinonimo': 'apelação'}
{'sinonimo': 'embargo'}
{'sinonimo': 'agravo'}
{'sinonimo': 'súplica'}
{'sinonimo': 'rogo'}
{'sinonimo': 'prece'}
{'sinonimo': 'oração'}
{'sinonimo': 'clamor'}
{'sinonimo': 'imploração'}
{'sinonimo': 'suplicação'}
{'sinonimo': 'invocação'}
{'sinonimo': 'peditório'}
{'sinonimo': 'rogação'}
{'sinonimo': 'instância'}
{'sinonimo': 'insistência'}
{'sinonimo': 'solicitado'}
{'sinonimo': 'requerido'}
{'sinonimo': 'necessitado'}
{'sinonimo': 'exigido'}
{'sinonimo': 'reivindicado'}
{'sinonimo': 'requisitado'}
{'sinonimo': 'rogado'}
{'sinonimo': 'suplicado'}
{'sinonimo': 'pleiteado'}
{'sinonimo': 'pretendido'}
{'sinonimo': 'demandado'}
{'sinonimo': 'reclamado'}
{'sinonimo': 'diligenciado'}
ev7lccsx

ev7lccsx2#

您的代码实际上非常接近。唯一需要更改的是使用a.sinonimo::text而不是.sinonimo a::text
您还可以做的是,由于类sinonimo和标签a组合专门属于您要抓取的单词,因此您可以使用yield from表达式来简化它。
例如

import scrapy
class SinonimoSpider(scrapy.Spider):
    name = 'sinonimo'
    start_urls = ['https://www.sinonimos.com.br/pedido/']
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.2840.71 Safari/539.36'}

    def parse(self, response): yield from ({'sinonimo':i.get()} for i in response.css('a.sinonimo::text'))

输出

....
....
https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'encomenda'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'pacote'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'volume'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'item'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'objeto'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'produto'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'unidade'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'embalagem'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'embrulho'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'carga'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'fardo'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'maço'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'rolo'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'bala'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'cartucho'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'envoltório'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'invólucro'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'solicitação'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'petição'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'requerimento'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'requisição'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'ordem'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'pedimento'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'reclamação'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'recurso'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'pretensão'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'demanda'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'exigência'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'reclamo'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'apelação'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'embargo'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'agravo'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'súplica'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'rogo'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'prece'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'oração'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'clamor'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'imploração'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'suplicação'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'invocação'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'peditório'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'rogação'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'instância'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'insistência'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'solicitado'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'requerido'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'necessitado'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'exigido'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'reivindicado'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'requisitado'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'rogado'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'suplicado'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'pleiteado'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'pretendido'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'demandado'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'reclamado'}
2022-08-03 23:27:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.sinonimos.com.br/pedido/>
{'sinonimo': 'diligenciado'}
...
...

相关问题