#python #string #selenium #web-scraping #tags
#python #строка #selenium #очистка веб-страниц #Теги
Вопрос:
У меня ошибка. когда я пытаюсь объединить ссылку и часть следующей ссылки, где мне нужно переключиться. Вот моя ошибка:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-172-c75cfd599dcf> in <module>
21 l.append(j['href'])
22
---> 23 url2 = 'https://krisha.kz/prodazha/kvartiry/petropavlovsk/' ''.join(l[j])
24 driver.get(url2)
25
TypeError: list indices must be integers or slices, not Tag
И я столкнулся с проблемой в следующем коде:
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
links = soup.find_all('a', {'class': 'a-card__title'})
soup2 = BeautifulSoup(str(links), 'html.parser')
href = soup2.find_all('a', href=True)
l = []
for j in href:
l.append(j['href'])
url2 = 'https://krisha.kz/prodazha/kvartiry/petropavlovsk/' ''.join(l[j])
driver.get(url2)
Мой «l» — это список hrefs, и он выглядит так, как показано на рисунке ниже:
Из-за этого я не могу перейти на следующую страницу, чтобы очистить ее. Какое целое число или фрагмент мне здесь нужно?
Комментарии:
1.
l[j]
— j — это тег, а не целое число2. могу ли я как-то изменить это, чтобы решить проблему?
3.
''.join(l[j])
— какова ваша цель в этой части?4. используйте l[j] без скобок [ ] =)))
5. j — это тег. вы не можете передать его как индекс. пожалуйста, уточните, что вы хотите сделать. от чего вы ожидаете
l[j]
возврата?
Ответ №1:
Вместо того, чтобы использовать list
попытку использования j
вашего цикла:
url2 = 'https://krisha.kz/prodazha/kvartiry/petropavlovsk/' j['href'][1:]
Я вырезал его в конце, чтобы избежать a //
в URL.
Вы также можете использовать list
, но чем вам нужно enumerate
в вашем цикле:
for i,j in enumerate(href):
l.append(j['href'])
url2 = 'https://krisha.kz/prodazha/kvartiry/petropavlovsk/' l[i][1:]
Пример
from bs4 import BeautifulSoup
import requests
import pandas as pd
url = "https://krisha.kz/prodazha/kvartiry/petropavlovsk/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
links = soup.find_all('a', {'class': 'a-card__title'})
soup2 = BeautifulSoup(str(links), 'html.parser')
href = soup2.find_all('a', href=True)
l = []
for j in href:
l.append(j['href'])
url2 = 'https://krisha.kz/prodazha/kvartiry/petropavlovsk/' j['href'][1:]
print(url2)