python_네트워크 데이터 추출 편2
3468 단어 python 파충류
이전 파충류 Blog 이후에 이 데이터를 얻은 후에 우리는 파충류의 원본일 뿐이고 더 많은 처리를 해야 한다. 바로 해석하는 곳이다. 여기는 바로 BeautifulSoup 파일 라이브러리를 이용한다.
소개를 살펴보겠습니다.
“You didn't write that awful page. You're just trying to get some data out of it. Beautiful Soup is here to help. Since 2004, it's been saving programmers hours or days of work on quick-turnaround screen scraping projects.”너 바보야, 이 말을 번역하고 중국어 Beautiful Soup 문서를 봐(http://beautifulsoup.readthedocs.io/zh_CN/latest/Beautiful Soup은 HTML이나 XML 파일에서 데이터를 추출할 수 있는 Python 라이브러리입니다.그것은 당신이 좋아하는 변환기를 통해 상투적인 문서 내비게이션을 실현하고, 문서를 찾고, 수정하는 방식을 실현할 수 있다.Beautiful Soup은 몇 시간, 심지어 며칠 동안의 업무 시간을 절약해 줍니다.
import requests
from bs4 import BeautifulSoup
r = requests.get('https://book.douban.com/subject/27031869/?icn=index-editionrecommend/')
soup = BeautifulSoup(r.text,"lxml") '''BeautidulSoup '''
partern = soup.find_all('p','comment-content')
for item in partern:
print(item.string)
문 클래스 객체
soup = BeautifulSoup(문서, 파서)
프로젝트 실기: 중국 대학 순위 정향 파충류
# -*- coding: utf-8 -*-
import requests
import bs4
from bs4 import BeautifulSoup
import lxml
###
def gethtml(url):
try:
r = requests.get(url,timeout = 30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return " "
###
def dealDate(ulist,html):
soup = BeautifulSoup(html,"lxml")
for tr in soup.find('tbody').children:
if isinstance(tr,bs4.element.Tag):
tds = tr('td')
ulist.append([tds[0].string,tds[1].string,tds[2].string])
###
def printUnitlist(ulist,num):
tplt = "{:^10}\t{:^6}\t{:^10}"
print(tplt.format(" "," "," ",chr(255)))
for i in range(num):
u = ulist[i]
print(tplt.format(u[0],u[1],u[2],chr(255)))
def main():
uinfo = []
url = "http://www.zuihaodaxue.com/shengyuanzhiliangpaiming2017.html";;
html = gethtml(url)
dealDate(uinfo,html)
printUnitlist(uinfo,20)
main()
정규 표현식
물론 우리는 정규 표현식 라이브러리에서 키워드를 추출할 수 있다
정규 표현식(regular expression regex RE)을 사용하여 페이지의 핵심 정보를 추출합니다. [문자열 그룹의 특징이나 패턴을 간결하게 표시합니다.]
일반 표현식 표현 문자열:
예: 일치하는 IP 주소의 정규 표현식
정규 표현식re 라이브러리는 rawstring 형식 (원본 문자열 형식: 전의 문자를 포함하지 않는 형식) 을 사용하여 정규 표현식: r'text '을 표시합니다
예: 우편 번호 r'[1-9]\d{5}
Re 라이브러리 기능 함수:
함수 메소드:
def search(pattern,string,flags=0):
pattern: 정규 표현식의 문자열이나 원본 문자열 표시
string:일치하는 문자열
flags: 정규 표현식 사용 시 제어 표시
re.IGNORECASE 정규 표현식의 대소문자 무시
re.MULTILINE 주어진 문자열의 각 행 일치 시작
re.DOTALL 기본 일치 줄 바꿈 문자를 제외한 모든 문자열
def split
(pattern,string,maxsplit=0,flags=0)
maxsplit: 최대 분할
Re 라이브러리의 다른 등가 사용법(객체용-컴파일된 후 여러 작업):
pat = re.compile (r'text')//re 일치 문자를re 라이브러리 대상으로 컴파일하기
rst = pat.search(string)//뒤에 pat 대상만 조작하면 됩니다
Match 객체:정규 표현식 정보 포함
# Re 라이브러리 탐욕 일치: re 라이브러리는 기본적으로 탐욕 일치, 즉 가장 긴 문자열을 출력합니다.
#최단매칭:최소매칭은 인사?의 일치
당신의 평론을 받아서 저를 진보시키기를 바랍니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python 파충류: 웹 요청 헤더에 User-Agent 추가텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.