[英]Soup.Find with different classes
我有一个关于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)
我在这个论坛上寻找另一个相同的问题,但我仍然坚持这个。 我希望有人能帮帮我,谢谢。
如果要选择元素的所有变体,可以使用.select()
方法以及三个相关的CSS选择器来覆盖您提供的示例aa, div.b, h1.c
。
如果有任何匹配的元素,那么您可以抓住第一个元素并获取其文本:
elements = soup.select('a.a, div.b, h1.c')
if elements:
condition = elements[0].get_text()
print(condition)
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.