我正在尝试从网页中抓取数据。然而,类名并不完全相同,但遵循相似的模式。类名如下
View 行 View -行-1 View -行-奇数clearfix
View 行 View -行-2 View 行-甚至clearfix
View 行 View -行3 View -行奇数clearfix
我尝试了下面的代码,但没有成功!可能是我使用的语法错误。
from bs4 import BeautifulSoup
import requests
source = requests.get('http://news.mit.edu/topic/artificial-intelligence2').text
soup = BeautifulSoup(source, 'lxml')
match = soup.find_all('li', class_='views-row views-row-* views-row-* clearfix')
print(match)
请帮我解决这个问题。
最佳答案
按 regex 过滤类值表达式:
from bs4 import BeautifulSoup
import requests
source = requests.get('http://news.mit.edu/topic/artificial-intelligence2').content
soup = BeautifulSoup(source, 'html.parser')
li_tags = soup.find_all('li', class_= re.compile(r'views-row views-row-[0-9]+ views-row-(odd|even) clearfix'))
print(li_tags)
<小时/>
为了更简化的搜索,您可以将 soup.select
与 css 选择器一起应用:
li_tags = soup.select('li[class*=views-row-]')
print(li_tags)
关于python - 如何抓取具有相同模式的不同类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57614788/