python_BeautifulSoup 라 이브 러 리 필터

7925 단어 python
0x 01 개술
C:\Users\Loulan>pip list --format=columns
Package        Version
-------------- -----------
beautifulsoup4 4.6.0

C:\Users\Loulan>python -V
Python 3.6.2

모두 findall 예
find_all(self, name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs)

string, list, regular expression, True, function 등 다섯 가지 유형의 filter 가 있 습 니 다.
name, attrs 의 value, text, * * kwargs 네 개의 매개 변 수 는 상기 모든 filter 를 사용 할 수 있 습 니 다.
regular expression 필터: 정규 표현 식 을 입력 하면 BeautifulSoup 은 search () 방법 으로 찾 습 니 다.
function 필터: return True 가 일치 하 는 요 소 를 설명 하면 일치 하 는 요 소 를 되 돌려 줍 니 다.
from bs4 import BeautifulSoup as Soup

0x 02 예시
1. name 속성
string 필터
모든 b 탭 찾기
soup.find_all('b')
soup.find_all(name='b')

list 필터
모든 a 태그 와 b 태그 찾기
soup.find_all(['a','b'])

regular expression 필터
태그 포함 알파벳 'a' 를 포함 하 는 모든 태그 찾기
soup.find_all(re.compile('a'))

모든 tag 에 'a' 가 포함 되 어 있 지 않 은 tag 찾기
soup.find_all(re.compile('[^"a",]'))

트 루 필터
바디 에 있 는 모든 태그 찾기
soup.find('body').find_all(True)

function 필터
xx 탭 을 찾 습 니 다. 이 탭 은 앞 뒤 가 string 대상 입 니 다.
def search_a_x_b(tag):
    return tag and isinstance(tag.previous_element,str) and isinstance(tag.next_element,str)
soup.find(search_a_x_b)

2. attrs 속성
string 필터
모든 id 속성 찾기 링크 의 tag
soup.find_all(attrs={'id':'link'})

list 필터
id 속성 값 을 링크 나 new 로 찾 습 니 다.링크 의 모든 태그
soup.find_all(attrs={'id':['link','new_link']})

regular expression 필터
링크 1, new 를 포함 하여 id 속성 값 에 링크 가 있 는 모든 탭 을 찾 습 니 다.링크 등
soup.find_all(attrs={'id':re.compiles('link')})

트 루 필터
id 속성 이 있 는 모든 tag 찾기
soup.find_all(attrs={'id':True})

function 필터
href 속성 값 에서. img 으로 끝 나 는 모든 tag 찾기
def search_id(attr):
    return attr and attr.lower().endswith('.img')
soup.find_all(attrs={'href':search_id})

3. string / text 속성
BeautifulSoup 4.6 이전의 string 은 현재 text 로 바 뀌 었 지만 string 을 사용 할 수도 있 습 니 다.
string 필터
메모: - 기본적으로 string 의 값 만 되 돌려 줍 니 다. - previous 를 통 해 가능 합 니 다.element 속성 으로 string 값 이 있 는 tag 를 획득 합 니 다.
——-
value 찾기 는 loulan 의 모든 string 입 니 다.
soup.find_all(string='loulan')

value 찾기 는 loulan 의 모든 tag 입 니 다.
[value.previous_element for value in soup.find_all(string='loulan')]

list 필터
value 는 'loulan' 이나 'nihao' 의 모든 string 을 찾 습 니 다.
soup.find_all(string=['loulan','nihao'])

regular expression 필터
value 에 'loulan' 이 존재 하 는 모든 string 찾기
soup.find_all(string=re.compile('loulan'))

트 루 필터
value 값 의 모든 string 찾기
soup.find_all(string=True)

function 필터
모든 value 값 을 찾 는 것 은 loulan 으로 끝 나 는 string 입 니 다.
def search_string(string):
    return string and string.lower().endswith('loulan')
soup.find_all(string=search_string)

4. * * kwargs 속성
string
메모: class 는 보존 글자 이기 때문에 class 속성 이 일치 할 때 class 를 사용 합 니 다.대신 하 다
——-
class 속성 값 을 찾 는 것 은 loulan 의 모든 tag 입 니 다.
soup = Soup.find_all(class_='loulan')

list 필터
class 의 값 을 찾 는 것 은 luolan 이나 nihao 의 모든 tag 입 니 다.
soup = Soup.find_all(class_=['loulan','nihao'])

regular expression 필터
class 의 값 이 img 를 포함 하 는 모든 tag 를 찾 습 니 다.
soup = Soup.find_all(class=re.compile('loulan'))

트 루 필터
class 속성 을 포함 하 는 모든 tag 찾기
soup = Soup.find_all(class=True)

function 필터
href 값 에서 img 으로 끝 나 는 모든 tag 찾기
def search_img(href):
    return href and href.lower().endswith('.img')
soup.find_all(href=search_img)

0x 03 총화
  • string 필 터 는 속성 값 과 완전히 일치 하 는 데 사 용 됩 니 다
  • list 필 터 는 여러 값 을 쉽게 찾 을 수 있 습 니 다
  • regular expression 필 터 는 불완전 일치 등 다른 특수 일치 에 사용 할 수 있 습 니 다
  • True 필 터 는 일부 속성 이 존재 하 는 지 확인 하 는 데 사용 할 수 있 습 니 다
  • function 필터 가 가장 강력 합 니 다. 상기 몇 개의 필터 보다 복잡 하지만 모든 필 터 를 실현 할 수 있 습 니 다.예 를 들 어 양쪽 은 string 의 tag 이 고 앞 은 strong 라벨 이 며 뒤 에는 a 라벨 등 복잡 한 여과
  • 좋은 웹페이지 즐겨찾기