#python #python-requests
Вопрос:
Я проверяю строку по селектору. Селектор действительно соответствует строке , но Python
все равно возвращает False
, почему?
Вот мой код:
import requests
from scrapy.selector import Selector
url = 'https://www.pickles.com.au/cars/item/-/details/CP-09-16--Built-06-16--Holden--Colorado--RG-MY16-LS-Crew-Cab--Cab-Chassis-Dual-Cab--5-Seats--4-Doors/302151687'
r = requests.get(url)
rsp = Selector(text=r.text)
current_status = rsp.xpath('//h6[@class="mt-2"]/text()[2]').get()
print(current_status)
print('This item has been sold.' == current_status)
Выход:
This item has been sold.
False
Комментарии:
1. Распечатайте
repr()
строку, чтобы вы могли точно видеть, что она содержит — может быть непечатаемый символ, может быть пробел в конце и т. Д.2. Что
repr(current_status)
выводит? Эти две строки явно, но, возможно, не очевидно , различны.3. Да, теперь все в порядке.
4. Там тоже было свободное место.
Ответ №1:
У вас есть дополнительное место в конце current_status
. Используйте rstrip
, чтобы удалить его при условии.
Это можно увидеть в приведенном ниже коде, который я мог бы воссоздать и разрешить:
import requests
from scrapy.selector import Selector
url = 'https://www.pickles.com.au/cars/item/-/details/CP-09-16--Built-06-16--Holden--Colorado--RG-MY16-LS-Crew-Cab--Cab-Chassis-Dual-Cab--5-Seats--4-Doors/302151687'
r = requests.get(url)
rsp = Selector(text=r.text)
current_status = rsp.xpath('//h6[@class="mt-2"]/text()[2]').get()
print(current_status)
print('This item has been sold.' == current_status.rstrip())