提问人:Seyedmahdi moosavyan 提问时间:6/12/2023 更新时间:6/13/2023 访问量:29
Python:如何在 BeautifulSoup4 中获取 li 标签列表
Python: How can i get a list of li tags in BeautifulSoup4
问:
我正在尝试抓取一个波斯语网页,我想从包含 3 个标签的 ul 中获得 6 个 li 标签。我的问题是每个 li 都有嵌套的 li 标签,当我使用 soup.find_all('li') 时,它会找到所有 li 标签(包含嵌套的标签)
我无法上传 HTML 汤,因为它渴望堆栈溢出
答:
0赞
Andrej Kesely
6/13/2023
#1
你可以尝试递归来解析链接树结构:
import requests
from bs4 import BeautifulSoup
def get_links(ul, path=None):
if path is None:
path = []
for li in ul.find_all('li', recursive=False):
if li.ul:
yield from get_links(li.ul, path + [li.a])
else:
yield path + [li.a]
url = 'http://chap.sch.ir/'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')
ul = soup.select_one('#block-taxonomy-menu-block-1 ul')
for links in get_links(ul):
print('Path: ')
print(' -> '.join(p.text for p in links))
print('URLS: ')
print(' -> '.join(p['href'] for p in links))
print('-'*80)
指纹:
...
Path:
کتاب های درسی استثنایی -> کتاب راهنمای تدریس (راهنمای معلم) -> آمادگی و ابتدایی
URLS:
/category/%D8%AF%D9%88%D8%B1%D9%87/631 -> /category/%D8%AF%D9%88%D8%B1%D9%87/682 -> /category/%D8%AF%D9%88%D8%B1%D9%87/684
--------------------------------------------------------------------------------
Path:
کتاب های درسی استثنایی -> کتاب راهنمای تدریس (راهنمای معلم) -> دوره اول متوسطه پیش حرفه ای
URLS:
/category/%D8%AF%D9%88%D8%B1%D9%87/631 -> /category/%D8%AF%D9%88%D8%B1%D9%87/682 -> /category/%D8%AF%D9%88%D8%B1%D9%87/685
--------------------------------------------------------------------------------
Path:
کتاب های درسی استثنایی -> کتاب راهنمای تدریس (راهنمای معلم) -> دوره دوم متوسطه حرفه ای
URLS:
/category/%D8%AF%D9%88%D8%B1%D9%87/631 -> /category/%D8%AF%D9%88%D8%B1%D9%87/682 -> /category/%D8%AF%D9%88%D8%B1%D9%87/686
--------------------------------------------------------------------------------
评论