python 테스트 웹 페이지
5469 단어 python
시간 이 관건 입 니 다. 서버 의 시간 을 정확히 잡 을 수 있다 면 승산 이 크게 높 아 질 것 이 라 고 할 수 있 습 니 다. 서버 시간 을 어떻게 잡 습 니까?HTTP 를 통 해 서버 에 요청 할 때 응답 하 는 서버 헤더 파일 에 요청 한 웹 페이지 의 조건 정 보 를 포함 하고 있 는 것 을 알 고 있 습 니 다. 그 중 Date 헤더 도 메 인 에 관련 시간 이 기록 되 어 있 습 니 다. 이 를 통 해 cnblogs 의 서버 시간 을 얻 을 수 있 습 니 다.
#!/usr/bin/python
#-------------------------------------------------------------------------------
# Name: GrabBook.py
# Purpose:
#
# Author: Mr.Wid
#
# Created: 22-10-2012
# Copyright: (c) Mr.Wid 2012
# Licence: GNU GPL
#-------------------------------------------------------------------------------
import re
import time
import urllib
import urllib2
import httplib
import cookielib
username = 'mr_wid' # ,
password = 'xxxxxxxx' #
#
def en(x):
return x.encode('utf-8')
def cn(x):
return x.decode('utf-8')
# cnblogs
def GetCnblogsServerTime():
""" cnblogs
GetCnblogsServerTime() -> list
NOTE:
"""
conn = httplib.HTTPConnection( 'www.cnblogs.com' )
conn.request( 'GET', '/' )
response = conn.getresponse()
ts = response.getheader('date')
ltime = time.strptime( ts[5:25], '%d %b %Y %H:%M:%S' ) #
serverTime = time.strftime( '%H:%M:%S',
time.localtime(time.mktime(ltime)+ 8*3600 )).split(':') # GMT , -> [ hour, minute, second ]
return serverTime
#
def cnblogs_login():
"""
cnblogs_login() -> None
"""
params_post = urllib.urlencode({
'__EVENTTARGET': '',
'__EVENTARGUMENT': '',
'__VIEWSTATE': r'/wEPDwULLTE1MzYzODg2NzZkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQtjaGtSZW1lbWJlcm1QYDyKKI9af4b67Mzq2xFaL9Bt',
'__EVENTVALIDATION': r'/wEWBQLWwpqPDQLyj/OQAgK3jsrkBALR55GJDgKC3IeGDE1m7t2mGlasoP1Hd9hLaFoI2G05',
'tbUserName':en(username),
'tbPassword':en(password),
'btnLogin':en(' ')
})
cookie=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)
login_response=urllib2.urlopen('http://passport.cnblogs.com/login.aspx?',params_post)
#
def PuhsishContent( content ):
"""
PuhsishContent( string content ) -> None
"""
comment_post = urllib.urlencode({
'__VIEWSTATE':en('/wEPDwUJNDYwODU2NjU1ZGQ='),
'txbComment': en(content),
'btnSubmint': en(' ')
})
page = urllib2.urlopen( r'http://m.cnblogs.com/mobileAddComment.aspx?id=101461&entry=2733027', comment_post )
data = page.read()
page.close()
print cn( data )
#
def PuhsishContentInTime():
luckHour = [ 10, 12, 14, 16, 18, 20 ] #
cnblogs_login() #
while True:
serverTime = GetCnblogsServerTime() #
print serverTime
if int(serverTime[0]) in luckHour and int(serverTime[1]) == 59: # 59 59
for i in range( int(serverTime[2]), 60 ): #
time.sleep(1)
time.sleep(0.75) # 59 59 750 , , sleep
PuhsishContent( ' ~ ......' )
print ' , 55 , ...'
time.sleep(55 * 60) # 55 , ,
#time.sleep(1) # 1
#
PuhsishContentInTime() # , !
... 에 있다
time.sleep(0.75) #59 59 750 , , sleep
이 줄 은 스스로 조절 할 수 있 는 밀리초 수 이 며, 입력 소 수 는 밀리초 급 을 나타 낸다.
알림: 여 기 는 while True 의 순환 을 사 용 했 습 니 다. 가 져 오 는 시간 에 많은 요청 이 발생 할 수 있 습 니 다. cnblogs 의 일정 시간 동안 요청 수량 이 제한 되 어 있 으 면 while True 에 time. sleep (1) 을 추가 하여 1 초 쉬 었 다가 서버 시간 을 가 져 올 수 있 습 니 다. 책 을 빼 앗 는 동작 수행 에 큰 영향 을 주지 않 습 니 다. 예제 코드 에 서 는 이 문장 을 추가 하 였 으 나 주석 을 달 았 습 니 다.
#time.sleep(1) ## 1
이렇게 하면 대량의 요청 이 발생 할 수 있 습 니 다. 주석 이 떨 어 지 는 이 유 는 1 초 에 몇 번 의 요청 이 발생 하 는 지 편리 하 게 볼 수 있 기 때 문 입 니 다. 즉, 1 초 에 서버 시간 과 교정 하 는 빈 도 를 편리 하 게 볼 수 있 기 때 문 입 니 다. wid 는 평균 1 초 에 15 번 정도 교정 하여 시간 이 서버 와 동기 화 되 는 것 을 확보 하고 나머지 는 네트워크 의 지연 문제 만 있 습 니 다.
출처:http://www.cnblogs.com/mr-wid/archive/2012/10/22/2734695.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.