繁体   English   中英

Soup.Find与不同的类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM