이 글 의 사례 는 Python 파충류 가 웹 페이지 정보 캡 처 기능 을 실현 하 는 것 을 다 루 었 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다. 먼저 웹 페이지 분석,읽 기 등 작업 을 실현 하려 면 다음 과 같은 몇 가지 모듈 을 사용 해 야 합 니 다.
import urllib
import urllib2
import re
우 리 는 바 이 두 와 같은 readline 방법 으로 어떤 사 이 트 를 읽 어 볼 수 있다.
def test():
f=urllib.urlopen('http://www.baidu.com')
while True:
firstLine=f.readline()
print firstLine
웹 페이지 정보의 캡 처 를 어떻게 실현 하 는 지,예 를 들 어 바 이 두 스티커 등 을 말씀 드 리 겠 습 니 다. 우 리 는 대략 몇 가지 일 을 해 야 한다. 먼저 웹 페이지 와 코드 를 가 져 옵 니 다.여기 서 우 리 는 여러 페이지 를 실현 해 야 합 니 다.즉,사이트 주소 가 바 뀔 것 입 니 다.우 리 는 페이지 수 를 전달 합 니 다.
그 후에 우 리 는 소설 내용 을 얻 으 려 고 한다.여기 서 우 리 는 제목 과 본문 으로 나 뉜 다.제목 이 페이지 마다 있 으 니 한 번 가 져 오 면 됩 니 다. 우 리 는 어떤 사 이 트 를 클릭 하여 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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: