При парсинге страницы, поиск ссылок выдает None в конечный результат
import requests
from bs4 import BeautifulSoup
url = 'https://calorizator.ru/product'
headers = {
'accept': '*/*',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 YaBrowser/23.1.5.708 Yowser/2.5 Safari/537.36'
}
req = requests.get(url, headers = headers)
src = req.text
with open('index.html', 'w') as file:
file.write(src)
soup = BeautifulSoup(src, 'lxml')
state = soup.find_all('ul', class_='product')
for item in state:
item_text = item.text
item_links = item.get('href')
print(f"{item_text} : {item_links}")
Вывод текста отлично работает, но при поиске ссылок выдает None, я даже пробовал менять параметр поиска, но результата это не дало.
Ответы (1 шт):
Автор решения: user510170
→ Ссылка
У Вас в каждом теге ul содержатся ещё теги таблицы li, которые в свою очередь содержат теги a и ссылки href. Как я понял, вы хотите сопоставить ссылки с названиями продуктов. Код который поможет Вам это сделать ниже:
from bs4 import BeautifulSoup
import requests
def main():
url = 'https://calorizator.ru/product'
headers = {
'accept': '*/*',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 YaBrowser/23.1.5.708 Yowser/2.5 Safari/537.36'
}
req = requests.get(url, headers = headers)
src = req.text
with open('index.html', 'w') as file:
file.write(src)
soup = BeautifulSoup(src, 'lxml')
state = soup.find_all('ul', class_='product')
main_url = 'https://calorizator.ru'
for item in state:
lis = item.find_all('li')
for li in lis:
li_text = li.text
li_link = li.find('a').get('href')
if li_link[0]=='/':
print(f"{li_text} : {main_url}{li_link}")
else:
print(f"{li_text} : {main_url}/{li_link}")
if __name__ == '__main__':
main()
Результат:
...
Японская кухня : https://calorizator.ru/product/japan
Детское питание : https://calorizator.ru/product/baby
Спортивное и другое питание : https://calorizator.ru/product/sport
Полный список продуктов : https://calorizator.ru/product/all
Подбор продуктов : https://calorizator.ru/product/choice
Все продукты в картинках : https://calorizator.ru/product/pix
Производители продуктов : https://calorizator.ru/product/brand
Личный кабинет : https://calorizator.ru/cabinet