파이썬 파충류 실천 노트(一)
7170 단어 python 파충류 학습
무등록
1단계: 페이지 소스 가져오기
(1) 우리가 찾으려는 페이지의 URL을 확인한 다음에 페이지의 개발자 도구를 통해 보내야 할 헤더스 정보를 확인한다.여기, 괴상백과에서는 User-Agent라는 헤더 정보를 추가해야 합니다. 그렇지 않으면 연결을 구축하는 데 실패할 것입니다.(2) urllib2의 Request(url,data,headers) 함수를 통해 요청 패키지를 생성합니다.데이터와 헤더스는 모두 선택할 수 있습니다.여기에 데이터를 전달할 필요는 없지만 헤더스를 전달하려면 반드시 실참을 전달할 때 헤더스 = XXX를 명확하게 써야 한다. 그렇지 않으면 컴파일러가 당신이 전달한 데이터가 어떤 실참인지 모른다.(3) urllib2의 urlopen(req) 함수를 통해 요청 패키지를 보내고 연결을 맺으면 함수가 응답을 되돌려줍니다.주의해야 할 것은 연결이 실패할 수 있기 때문에 이상 처리 메커니즘try-except를 사용하여 이상을 포착하고 이상 정보를 출력할 수 있으며 컴파일할 때 큰 줄의 정보가 발생하는 것보다 낫다.(4) 되돌아오는 응답 대상의read() 방법을 사용하여 페이지 정보를 읽고 decode('utf-8') 함수를 통해 페이지 정보를utf-8의 데이터로 디코딩하여 다음 처리를 편리하게 합니다.
중점: ① 요청한 데이터와 헤더스 ②이상 처리 ③ 정보 읽기와 디코딩
2단계: 필요한 정보 추출
(1) 이전 단계에서 얻은 페이지의 원본 코드 때문에 우리는 정규 표현식을 통해 발표자, 칭찬받는 사람, 단락 텍스트 등 우리가 필요로 하는 정보를 추출해야 한다.여기에서, 우리는 페이지의 원본 코드를 자세히 살펴보고, 우리의 정보가 어디에 있는지 보고, 정규 표현식으로 일치해야 한다.리 모듈의compile 함수를 사용하여 문자 모드 패널을 생산합니다.이 패널은 모든re모듈 함수에 사용됩니다.(2)pattern을 실참으로findall 함수에 전달하고 요구에 맞는 문자열을 찾습니다.여기서는 모든 단락이 있는 부분에 일치하고, 목록의 형식으로findall의 반환값으로 되돌아오며, 목록의 요소는 일치하는 문자열입니다.(3) 성공적으로 일치하는 모든 문자열을 순환으로 하나씩 처리한다.(4) 응용 프로그램에 따라 필요한 정보를 저장한다.
중점: ① 소스 코드의 레이아웃을 확인합니다.② 가장 많이 사용하는 정규 표현식 부분은.∗? ,이것은 비탐욕 모드의 가장 긴 일치입니다. 즉, 일단 일치하면?뒤에 있는 문자는 즉시 일치를 정지합니다.괄호 넣기(.?)그룹을 나누면 그룹 내의 정보를 사용할 수 있기 때문에 추출할 정보에 대해 반드시 사용해야 한다(.?)일치하다.③ 정보를 추출한 후 응용에 따라 문자열을 수정할 수 있다.추출한 정보는
등 html 기호도 포함될 수 있고 빈칸, 빈 줄도 있기 때문에 깨끗한 텍스트를 얻으려면 반드시 처리해야 합니다.
3단계: 프로그램 논리 구축
(1) 이 단계는 비교적 공정화되어 상술한 절차를 봉인하고 프로그램의 논리를 확정하기만 하면 위에서 아래로 코드를 작성할 수 있다.대상을 대상으로 하는 방법으로 파충류를 구축하여 코드의 중용성을 높일 수 있다.
중점: ①python이 대상을 대상으로 하는 특징을 주의해야 한다. 예를 들어 클래스 방법의 매개 변수는 첫 번째는 모두 실례를 가리키는 매개 변수이기 때문에 빠뜨려서는 안 된다.②클래스의 구성원은 데이터 구성원이든 구성원 함수든self를 통과해야 한다.XXX의 방식으로 호출되며, 자신이 성명한 국부 변수와 혼동하지 마십시오.③ 입력한 input 함수에 중국어를 표시하려면 유니버설 ('XXX', 'utf-8') 을 사용하십시오.encode(‘gbk’).
프로그램 부분: 스스로 실현된 프로그램
다음은 내가 실현한 페이지 수에 따라 괴사 백과사전의 단락을 추출하고 보여주는 프로그램이다.
__author__ = 'HJX'
# _*_ coding: utf-8 _*_
import re
import urllib
import urllib2
import thread
import time
class QSBK2:
' 2'
def __init__(self):
self.pageIndex = 1;
self.url = 'https://www.qiushibaike.com/hot/page/'+str(self.pageIndex);
self.user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'
self.headers = {'User-Agent' : self.user_agent}
self.stories = []
def getPageCode(self):
try:
req = urllib2.Request(self.url, headers = self.headers)
res = urllib2.urlopen(req)
pageCode = res.read().decode('utf-8')
return pageCode
except urllib2.URLError, e:
if hasattr(e, 'reason'):
print u' , :', e.reason
return None
def getStories(self):
stories = []
pageCode = self.getPageCode()
if not pageCode:
print u' !'
return None
pattern = re.compile('.*?(.*?)
.*?content">.*?span>(.*?) .*?number">(.*?)', re.S)
items = re.findall(pattern, pageCode)
for item in items:
publisher = item[0].strip()
br = re.compile('
')
text = re.sub(br, '
', item[1])
vote = item[2].strip()
stories.append([publisher, text, vote])
return stories
def showStories(self):
if len(self.stories) == 0:
print u' !'
else:
for story in self.stories:
publisher = story[0]
text = story[1]
vote = story[2]
print u' :%s\t\t :%s
%s
' % (publisher, vote, text)
def start(self):
print u'----- , -----'
while 1:
self.pageIndex = input(unicode(' , 0 :', 'utf-8').encode('gbk'));
if self.pageIndex == 0:
print u' !'
break
self.stories = self.getStories()
self.showStories();
spider = QSBK2()
spider.start()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 파충류 학습 노트 2.9 (bs4 사용 사례)python 파충류 학습 노트 1.1 (일반 파충류 와 초점 파충류) python 파충류 학습 노트 1.2 (HTTP 와 HTTPS) python 파충류 학습 노트 1.3 str 와 bytes 의 차이 python ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.