Issue
I'm trying to do a web scraping with scrapy, but when I try to get the text from the href, it comes as 'none', can someone help me?
I need to get the values of the "sinonimos" classes
The page, the values I want to get are these:
Code:
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()
}
Result:
.........
........
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/>
........
........
Solution
You are already looping for ".sinonimo" when you wrote for filmes in response.css('.sinonimo'):
. It fails because you tried to do it again, and it also includes all the link tags that contains the words you need. Just a ::text
is sufficient to get all the words.
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)
Output:
{'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'}
Answered By - DeltaHaxor
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.