
Python中如何爬取li标签内容
用户关注问题
我想用Python提取网页上所有的li标签中的文本内容,应该怎样操作?需要用到哪些库?
利用BeautifulSoup提取li标签文本
可以使用Python的requests库获取网页内容,再用BeautifulSoup库解析HTML,最后通过find_all('li')方法获取所有li标签,然后访问其.text属性进行提取。示例代码:
import requests
from bs4 import BeautifulSoup
response = requests.get('网页URL')
soup = BeautifulSoup(response.text, 'html.parser')
li_tags = soup.find_all('li')
for li in li_tags:
print(li.text.strip())
网页中有多个li标签,我只想提取class属性为某个值的li标签内容,用Python该怎么写?
通过指定class参数过滤li标签
BeautifulSoup的find_all方法支持传入class_参数来筛选匹配的标签,例如:
li_tags = soup.find_all('li', class_='目标class名称')
for li in li_tags:
print(li.text.strip())
这样可以只爬取指定class的li标签文本。
有些网页的li标签内容不是静态HTML,而是通过JavaScript动态生成,直接请求页面拿不到这些内容,怎么解决?
使用Selenium模拟浏览器抓取动态内容
对于动态加载的li标签,可以使用Selenium库自动打开浏览器,等待页面加载完成,再通过页面源码获取所需要内容。例如:
from selenium import webdriver
from bs4 import BeautifulSoup
browser = webdriver.Chrome()
browser.get('网页URL')
适当等待页面加载或使用显式等待
html = browser.page_source
soup = BeautifulSoup(html, 'html.parser')
li_tags = soup.find_all('li')
for li in li_tags:
print(li.text.strip())
browser.quit()