Home > Mobile >  scraping from amazon returns no
scraping from amazon returns no

Time:05-03

Why this code does not match a string from x ? Code will get all a-list-item , but when a check if there is a match , it always outputs NO

import requests
from bs4 import BeautifulSoup


check_words = '<span > Los kits de montaje completos permiten una instalación rápida y fácil  </span>'
page = requests.get("https://www.amazon.es/dp/B00DRE5W04",verify=True)
soup = BeautifulSoup(page.content, 'html.parser')
x = soup.find_all('span', class_='a-list-item')

for item in x:
    print(item)
    if check_words == item:
        print('yesss ',item)
    else:
        print('no')


OUTPUT

<span >Ve a tus pedidos y comienza la devolución</span>
no
<span >Selecciona el método de devolución</span>
no
<span >Envíalo.</span>
no
<span > Los kits de montaje completos permiten una instalación rápida y fácil  </span>
no
<span > El enchufe universal UX se puede utilizar en todos los materiales sólidos, huecos y cartón  </span>
no
<span > Fácil de usar  </span>
no
<span > Marca: Fischer  </span>
no

CodePudding user response:

You should convert items into strings

Try:

import requests
from bs4 import BeautifulSoup


check_words = '<span > Los kits de montaje completos permiten una instalación rápida y fácil  </span>'
page = requests.get("https://www.amazon.es/dp/B00DRE5W04",verify=True)
soup = BeautifulSoup(page.content, 'html.parser')
x = soup.find_all('span', class_='a-list-item')

for item in x:
    print(item)
    if check_words == str(item):
        print('yesss ',item)
    else:
        print('no')

CodePudding user response:

I would suggest you compare with the text inside the span as follows:

import requests
from bs4 import BeautifulSoup

check_words = 'Los kits de montaje completos permiten una instalación rápida y fácil'
page = requests.get("https://www.amazon.es/dp/B00DRE5W04", verify=True)
print(page.text)
soup = BeautifulSoup(page.content, 'html.parser')

for span in soup.find_all('span', class_='a-list-item'):
    text = span.get_text(strip=True)
    print(text)
    
    if check_words == text:
        print('yesss ', text)
    else:
        print('no')
  • Related