В вашем коде есть одна существенная ошибка:
c=response.xpath('//div[@class="navHeader"]/ul')
if name1 in c:
...
здесь c
в конечном итоге является SelectorList
объектом, и вы проверяете, находится ли строка name
в SelectorList
объекте, который, конечно,всегда будет False
.
. Чтобы исправить это, вам нужно извлечь значения:
c=response.xpath('//div[@class="navHeader"]/ul').extract()
^^^^^^^^^^
Кроме того, вы, вероятно, захотите обработать значения, чтобы сделать сопоставление более изменчивым:
headers = response.xpath('//div[@class="navHeader"]/ul').extract()
headers = [c.strip().lower() for c in headers]
if name1 in headers:
...
Вышеприведенное будет игнорировать конечные и начальные пробелы, а также делать все строчными для сопоставления без учета регистра.
Пример использования:
headers = sel.xpath('//div[@class="media-body"]/h5/text()').extract()
headers = [c.strip().lower() for c in headers]
for header in headers:
if 'gorilla' in header:
print(f'yay matching header: "{header}"')
выводит:
yay matching header: "did this gorilla learn how to knit?"