파충류 노트 정리

파충류 중 노드 선택 방법 - xpath, css 선택기 사용법
xpath 선택
  • 모든 노드 선택
  • xpath('//*')
    

  • 서브노드 선택
  • /직접 서브노드 확보
  • //후손 노드 획득
  • xpath('//li/a')
    

  • 모 노드 선택
  • 위치와 속성에 따라 가져옵니다. @는 속성을 대표하고 @는 필터에 사용할 수 있습니다.
  • xpath('//a[@href="link4.html"]/../@class')
    
  • xpath('//a[@href="link4.html"]/parent::*/@class')
    


  • 순서대로 선택
  • 첫 번째 리 선택[1]
  • xpath('//li[1]/a/text()')
    

  • 마지막 리[last] 선택
  • xpath('//li[last()]/a/text()')
    

  • 임의의 위치 선택li[position()
  • xpath('//li[position()<3]/a/text()')
    

  • 선택 반전 리[last()-2]
  • xpath('//li[last()-2]/a/text()')
    


  • 노드 축 선택
  • 조상 노드, ancestor
  • xpath('//li[1]/ancestor::*')
    
  • xpath('//li[1]/ancestor::div')
    

  • 모든 속성 값 가져오기attribute
  • xpath('//li[1]/attribute::*')
    

  • 하위 노드 선택, 선별 조건 추가 가능,child
  • xpath('//li[1]/child::a[@href="link1.html"]')
    

  • 모든 자손 노드 획득, 한정 조건 가입, * 하지 않음, descendant
  • xpath('//li[1]/descendant::span"]')
    

  • 현재 노드 뒤에 있는 모든 노드를 선택하고following
  • xpath('//li[1]/following::*[2]"]')
    

  • 현재 노드의 모든 동급 노드,following-sibiling 가져오기
  • xpath('//li[1]/following-sibling::*"]')
    


  • 속성 다수치 일치(contains),contains
  • xpath('//li[contains(@class,"li")]/a/text()')
    

  • 다중 속성은class 속성의para와 일치합니다
  • xpath('//div[contains(@class,"para") and contains(@label-module,"para")]/text()')
    

  • 여기 노드 선택이 정확하지 않으면 텍스트에 일치하지 않습니다
  • 필터의 속성 가져오기
  • xpath('//li[@class="item-0"]/a/text()')
    

  • 모든 속성 획득
  • xpath('//li/a/@href')
    



  • BeautifulSoup
  • 가져오기 모듈
  • from bs4 import BeautifulSoup
    

  • 객체 작성
  • soup = BeautifulSoup(html,lxml)
    

  • 유형
  • bs4.element.Tag 유형
  • 속성 획득
  • 노드 이름 가져오기,name
  • soup.title.name

  • 노드의 모든 속성 가져오기,attrs
  • soup.p.attrs

  • 노드 내용 얻기
  • soup.p.string


  • 네스트된 선택
  • soup.head.title
  • soup.head.title.string


  • 관련 선택
  • 직접 하위 노드의 목록을 되돌려줍니다
  • soup.p.contents
  • 서브노드
  • soup.p.children

  • 자손 노드
  • soup.p.descendants

  • 상위 노드 및 상위 노드
  • soup.a.parent
  • soup.a.parents

  • 다음, 이전, 형제 노드, 조상 노드
  • soup.a.next_sibling
  • soup.a.previous_sibling
  • soup.a.next_siblings
  • soup.a.previous_siblings


  • 정보 얻기
  • list(soup.a.parents)[0]
    
  • list(soup.a.parents)[0].attrs['class']
    

  • 방법 선택기
  • find_all
  • soup.find_all(name='ul')
    
  • for ul in soup.find_all(name='ul')
    	for li in ul.find_all(name='li')
      	print(li.string)
    
  • 입력 속성 조회,attrs
  • soup.find_all(attrs={'id':'list-1'}
    

  • 키워드 충돌 시 밑줄 넣기
  • soup.find_all(class_='element')
    

  • 텍스트text를 가져오고 정규를 이용하여 필요한 내용을 일치시킵니다
  • soup.find_all(text=re.compile('link'))
    


  • find(), 단일 요소 반환
  • 방법과findall () 는 첫 번째 원소만 되돌려줍니다
  • find_parent()
  • find_parents()
  • find_next_siblings()
  • find_next_sibiling()
  • find_previous_siblings()
  • find_previous_sibling()
  • find_all_next () 노드를 반환한 후 일치하는 모든 내용
  • find_next () 노드 반환 후 첫 번째 일치하는 내용
  • find_all_previous()
  • find_previous()

  • css선택기,select 방법
  • soup.select('.panel .panel-heading')
    
  • 네스트된 선택
  • for ul in soup.select('ul')
    	print(ul.select('li'))
    

  • 속성 획득
  • for ul in soup.select('ul')
    	print(ul['id'])
      print(ul.attrs['id'])
    

  • 텍스트 가져오기
  • for li in soup.select('li')
    	print(li.get_text())
      print(li.string)
    



  • pyquery
  • 유형
  • PyQuery 유형
  • 가져오기 모듈
  • from pyquery import PyQuery as pq

  • 문자열 초기화 방법
  • doc = pq(html)

  • URL 초기화 방법
  • doc = pq(url=‘https://www.baidu.com’)

  • 파일 초기화 방법
  • doc = pq(filename='demo.html')
    

  • 기본 css 선택기
  • doc('#content .list li')
    

  • 노드 찾기
  • find() 모든 하위 노드 가져오기
  • items = doc('.list')
    lis = items.find('li')
    

  • children()
  • items = doc('.list')
    lis = items.children('li')
    

  • parent () 여기에 필터 선택을 추가할 수 있습니다
  • items = doc('.list')
    lis = items.parent('li')
    

  • parents()

  • 스트리밍 노드,items, 추출 노드에 사용 가능, 하나의 생성기로 되돌려줌, 스트리밍을 통해 각 하위 노드를 획득
  • lis = doc('li').items()
    for i in lis:
      print(i)
    

  • 정보 얻기
  • 속성 획득
  • 여러 노드를 되돌릴 때attr()를 호출하면 첫 번째 노드 속성
  • 만 획득합니다
  • 역주행을 통해 모든 노드의 속성을 되돌려줍니다
  • a = doc('.item-0.active a')
    print(a.attr('href'))
    print(a.attr.href)
    for item in a.items():
      print(item.attr('href'))
    

  • 텍스트 가져오기
  • doc = pq()
    a = doc('.item-0.active a')
    print(a.text)
    print(a.html())
    

  • 노드 작업
  • addClass 및 removeClass
  • doc = pq()
    li = doc('.item-0.active')
    li.removeClass('active')
    li.addClass('active')
    


  • attr,text,html
  • doc = pq()
    li = doc('.item-0.active')
    #attr()      ,         ,         
    li.attr('name','link')
    #      ,  
    li.text('change item')
    li.html('changed item')
    


  • 위조 선택기
  • doc = pq()
    #       
    li = doc('li:first-child')
    #        
    li = doc('li:last-child')
    #       
    li = doc('li:nth-child(2)')
    #       
    li = doc('li:gt(2)')
    #      
    li = doc('li:nth-child(2n)')
    #           
    li = doc('li:contains(second)')
    

  • 좋은 웹페이지 즐겨찾기