Python 파충 류 는 웹 페이지 정보 캡 처 기능 예제[URL 과 정규 모듈]를 실현 합 니 다.

이 글 의 사례 는 Python 파충류 가 웹 페이지 정보 캡 처 기능 을 실현 하 는 것 을 다 루 었 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
먼저 웹 페이지 분석,읽 기 등 작업 을 실현 하려 면 다음 과 같은 몇 가지 모듈 을 사용 해 야 합 니 다.

import urllib
import urllib2
import re

우 리 는 바 이 두 와 같은 readline 방법 으로 어떤 사 이 트 를 읽 어 볼 수 있다.

def test():
  f=urllib.urlopen('http://www.baidu.com')
  while True:
   firstLine=f.readline()
   print firstLine

웹 페이지 정보의 캡 처 를 어떻게 실현 하 는 지,예 를 들 어 바 이 두 스티커 등 을 말씀 드 리 겠 습 니 다.
우 리 는 대략 몇 가지 일 을 해 야 한다.
먼저 웹 페이지 와 코드 를 가 져 옵 니 다.여기 서 우 리 는 여러 페이지 를 실현 해 야 합 니 다.즉,사이트 주소 가 바 뀔 것 입 니 다.우 리 는 페이지 수 를 전달 합 니 다.

  def getPage(self,pageNum):
     try:
        url=self.baseURL+self.seeLZ+'&pn='+str(pageNum)
        #  request  
        request=urllib2.Request(url)
        response=urllib2.urlopen(request)
        #print 'URL:'+url
        return response.read()
     except Exception,e:
        print e

그 후에 우 리 는 소설 내용 을 얻 으 려 고 한다.여기 서 우 리 는 제목 과 본문 으로 나 뉜 다.제목 이 페이지 마다 있 으 니 한 번 가 져 오 면 됩 니 다.
우 리 는 어떤 사 이 트 를 클릭 하여 f12 를 누 르 면 그의 제목 라벨 이 어떻게 구성 되 었 는 지 볼 수 있다.예 를 들 어 바 이 두 스티커 는이다.<br>그럼 이 메 시 지 를 캡 처 하기 위해 서<code>reg=re.compile(r'<title>(.*?)。')</code>와 일치 합 니 다.<br>제목 캡 처 가 끝나 면 우 리 는 본문 을 잡 아야 합 니 다.우 리 는 본문 에 여러 단락 이 있 을 것 이라는 것 을 알 고 있 습 니 다.그래서 우 리 는 순환 적 으로 전체 items 를 잡 아야 합 니 다.여기 서 우 리 는 주의 합 니 다.<br>텍스트 의 읽 기와 쓰기 동작 은 반드시 순환 밖 에 두 어야 한다.하이퍼링크 제거,<br>등 메커니즘 을 동시에 추가 합 니 다.<br>마지막 으로,우 리 는 주 함수 에서 호출 하면 된다.<br>전체 코드:<pre><code> # -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') #爬虫之网页信息抓取 #需要的函数方法:urllib,re,urllib2 import urllib import urllib2 import re #测试函数->读取 #def test(): # f=urllib.urlopen('http://www.baidu.com') # while True: # firstLine=f.readline() # print firstLine #针对于百度贴吧获取前十页楼主小说文本内容 class BDTB: def __init__(self,baseUrl,seeLZ): #成员变量 self.baseURL=baseUrl self.seeLZ='?see_lz='+str(seeLZ) #获取该页帖子的代码 def getPage(self,pageNum): try: url=self.baseURL+self.seeLZ+'&pn='+str(pageNum) #创建request对象 request=urllib2.Request(url) response=urllib2.urlopen(request) #print 'URL:'+url return response.read() except Exception,e: print e #匹配标题 def Title(self): html=self.getPage(1) #compile提高正则匹配效率 reg=re.compile(r'<title>(.*?)。') #返回list列表 items=re.findall(reg,html) f=open('output.txt','w+') item=('').join(items) f.write('\t\t\t\t\t'+item.encode('gbk')) f.close() #匹配正文 def Text(self,pageNum): html=self.getPage(pageNum) #compile提高正则匹配效率 reg=re.compile(r'"d_post_content j_d_post_content ">(.*?)</div>') #返回list列表 items=re.findall(reg,html) f=open('output.txt','a+') #[1:]切片,第一个元素不需要,去掉。 for i in items[1:]: #超链接去除 removeAddr=re.compile('<a.*?>|</a>') #用""替换 i=re.sub(removeAddr,"",i) #<br>去除 i=i.replace('<br>','') f.write('<br/><br/>'+i.encode('gbk')) f.close() #调用入口 baseURL='http://tieba.baidu.com/p/4638659116' bdtb=BDTB(baseURL,1) print '爬虫正在启动....'.encode('gbk') #多页 bdtb.Title() print '抓取标题完毕!'.encode('gbk') for i in range(1,11): print '正在抓取第%02d页'.encode('gbk')%i bdtb.Text(i) print '抓取正文完毕!'.encode('gbk') </code></pre>PS:여기 서 여러분 께 매우 편리 한 정규 표현 식 도구 2 가 지 를 제공 합 니 다.참고 하 시기 바 랍 니 다.<br>JavaScript 정규 표현 식 온라인 테스트 도구:<br><a rel="noreferrer noopener nofollow" href="http://tools.jb51.net/regex/javascript">http://tools.jb51.net/regex/javascript</a> <br>정규 표현 식 온라인 생 성 도구:<br><a rel="noreferrer noopener nofollow" href="http://tools.jb51.net/regex/create_reg">http://tools.jb51.net/regex/create_reg</a> <br>더 많은 파 이 썬 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.<br>본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기