Python 웹 페이지 데이터 도구 만 들 기
필수 환경:
Python3
시작 하 다
먼저 간단 한 버 전 을 실현 하고 코드 를 직접 올 립 니 다.
import urllib.request
import urllib.error
# get
def get(url):
code=urllib.request.urlopen(url).code
return code
if __name__ == '__main__':
#
url = "http://shua.jb51.net"
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
headers = {'User-Agent':user_agent}
req = urllib.request.Request(url, headers=headers)
#
i = 1
while 1:
code = get(url)
print(' :'+str(code))
i = i+1
간단 하고 거 친 것 은 pv 입 니 다.ip 는 변 하지 않 았 습 니 다.검색엔진 에 쉽게 발견 되 었 습 니 다.다음은 개선 하 겠 습 니 다.프 록 시 기능 추가
get 방법 에 다음 코드 를 추가 합 니 다:
random_proxy = random.choice(proxies)
proxy_support = urllib.request.ProxyHandler({"http":random_proxy})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
주 방법 수정:
if __name__ == '__main__':
url = "http://shua.jb51.net"
# ,
proxies = ["124.88.67.22:80","124.88.67.82:80","124.88.67.81:80","124.88.67.31:80","124.88.67.19:80","58.23.16.240:80"]
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
headers = {'User-Agent':user_agent}
req = urllib.request.Request(url, headers=headers)
i = 1
while 1:
#
code = get(url,proxies)
print(' '+str(i)+' :'+str(code))
i = i+1
이렇게 하면 차이 가 많 지 않 지만 bug 가 있 습 니 다.만약 페이지 가 열 리 지 않 거나 대리 가 효력 을 잃 으 면 프로그램 이 자동 으로 끝 납 니 다.그 다음 에 이상 처리 기능 을 추가 합 니 다.예외 처리
메 일 알림
def mail(txt):
_user = " "
_pwd = " "
_to = " "
msg = MIMEText(txt, 'plain', 'utf-8')
#
msg["Subject"] = " !"
msg["From"] = _user
msg["To"] = _to
try:
# qq
s = smtplib.SMTP_SSL("smtp.qq.com", 465)
s.login(_user, _pwd)
s.sendmail(_user, _to, msg.as_string())
s.quit()
print("Success!")
except smtplib.SMTPException as e:
print("Falied,%s" % e)
그리고 우 리 는 주 방법 을 수정 합 시다.
if __name__ == '__main__':
url = "http://shua.jb51.net"
proxies = ["124.88.67.22:80","124.88.67.82:80","124.88.67.81:80","124.88.67.31:80","124.88.67.19:80","58.23.16.240:80"]
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
headers = {'User-Agent':user_agent}
req = urllib.request.Request(url, headers=headers)
i = 1
while 1:
try:
code = get(url,proxies)
print(' '+str(i)+' :'+str(code))
i = i+1
except urllib.error.HTTPError as e:
print(e.code)
# mail
mail(e.code)
except urllib.error.URLError as err:
print(err.reason)
# mail
mail(err.reason)
완성!결어
코드 는 짧 은 50 줄 만 있 고 프로그램 은 개선 할 수 있 습 니 다.
예 를 들 어 프 록 시 목록 자동 가 져 오기,인터페이스 추가,다 중 스 레 드 확장 등
마지막 으로 다른 동료 들 의 작품 을 하나 더 나 눠 드 리 도록 하 겠 습 니 다.
import urllib2
import timeit
import thread
import time
i = 0
mylock = thread.allocate_lock()
def test(no,r):
global i
url = 'http://blog.csdn.net'
for j in range(1,r):
req=urllib2.Request(url)
req.add_header("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)")
file = urllib2.urlopen(req)
print file.getcode();
mylock.acquire()
i+=1
mylock.release()
print i;
thread.exit_thread()
def fast():
thread.start_new_thread(test,(1,50))
thread.start_new_thread(test,(2,50))
fast()
time.sleep(15)
테스트 를 통 해 두 스 레 드 이상 서버 에 503 오류 가 발생 하기 때문에 두 스 레 드 가 딱 좋 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.