2017-01-29 41 views
1

我有一个关于蟒蛇的问题,我想凑仅有1不同属性的类和循环对他们的页面,所以这是HTML代码,我需要:Soup.Find不同类别

“一“: ”类:一“

'格': ”等级:b“

'H1': ”等级:C“

的页面只是其中之一,所以我尽量与“其他如果”和“尝试”的声明,但我仍然不明白。此代码仅适用于一个类别:

#!/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

该print语句产生了什么? –

+0

晕账单,,这个打印动态条件或状态 – Orin

+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) 
+0

soup select ,, right ,,非常感谢josh,但是还有更多关于课程的问题,如果课堂有空间,例如='div.alang-py prettyprint prettyprinted',他们什么都不显示因为该命令找不到具有空格字符的类。 – Orin

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

+0

非常感谢你,它的代码非常好 – Orin