我有一个关于python的问题,我想用不同的属性类抓取1页并循环它们,所以这是我需要的html代码:
'a':“class:a”
'div':“class:b”
'h1':“class:c”
页面只有其中一个,所以我尝试使用“else if”和“try”语句,但我仍然没有得到它。此代码仅适用于一个类:
#!/usr/bin/env python
import csv
import requests
from bs4 import BeautifulSoup
urls = csv.reader(open('link.csv'))
for url in urls:
response = requests.get(url[0])
html = response.content
soup = BeautifulSoup(html, 'html.parser')
condition = soup.find('a', attrs={'class': 'a'}).get_text()
print (condition)
我在这个论坛中寻找另一个相同的问题,但我仍然坚持这个。 我希望有人能帮助我,谢谢你。
答案 0 :(得分:0)
如果要选择元素的所有变体,可以使用.select()
方法以及三个相关的CSS选择器来覆盖您提供的示例a.a, div.b, h1.c
。
如果有任何匹配的元素,您可以抓住第一个并获取其文本:
elements = soup.select('a.a, div.b, h1.c')
if elements:
condition = elements[0].get_text()
print(condition)
答案 1 :(得分:0)
import bs4
html = """<html>
<head>
<div class="a"></div>
<a class="b"></a>
<h1 class="c"></h1>
</body>
</html>"""
soup = bs4.BeautifulSoup(html, 'lxml')
soup.find_all(class_=['a', 'b', 'c'])
soup.select('.a, .b, .c')
在find()
中,[a, b, c]
表示a或b或c
在select()
中,a, b, c
表示a或b或c