Как вывести все HTML теги используя beautifulsoup?
Для парсинга сайтов я использую библиотеку BeautifulSoup и мне нужно вывести все теги li, но выводиться только один(у этого тега нет класса). Как это сделать?
Вот код:
page = requests.get(url)
print(page.status_code)
soup = BeautifulSoup(page.text, "html.parser")
result = soup.find("div", class_='casualties')
print(result.div.ul.li.string)
Ответы (2 шт):
Автор решения: Роман
→ Ссылка
result = soup.find_all("div", class_='casualties')
print(result.div.ul.li.string)
Автор решения: zomaman
→ Ссылка
Этот наглядный пример выводит все теги li. Метод find, который вы использовали, - возвращает первый найденный тег. Метод find_all возвращает список всех найденных тегов, который потом можно перебрать циклом.
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '\
'AppleWebKit/537.36 (KHTML, like Gecko) '\
'Chrome/100.0.4896.127 Safari/537.36'
}
def parse_all_li(url):
response = requests.get(url) # headers можно передать сюда как параметр
# Помогает, если сайт подозревает что запрос сделал бот.
soup = BeautifulSoup(response.content, 'lxml')
for li in soup.find_all('li'):
print(li)
if __name__ == '__main__':
parse_all_li('http://htmlbook.ru/faq/kak-sozdat-tablitsu-v-html5-i-ukazat-ee-parametry-cherez')