2017-01-29 121 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