Python 자동 블 로그 조회 수 인 스 턴 스 코드
오늘 은 우연 한 기회 에 다른 사람 이 현재 의'양 을 닦 는'행 위 를 이야기 하 는 것 을 듣 고 호기심 을 불 러 일 으 켰 다.그리고 requests 모듈 이 저 에 게 유용 하 다 는 것 을 보고 간단 한 테스트 사례 를 썼 습 니 다.신기 하 게 도 이 방법 이 효과 가 있다 는 것 을 발견 했다.그럼 뭘 더 기 다 려?
전주
생각 은 간단 하 다.바로 요청 을 보 내 는 실현 이 라면 된다.코드 는 다음 과 같 습 니 다:
headers = {
'referer':'http://jb51.net/',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'
}
def getHtml(url,headers):
req = urllib2.Request(url,headers=headers)
page = urllib2.urlopen(req)
html = page.read()
return html
목표 url 과 headers 를 수 동 으로 추가 하면 됩 니 다.나 는 자 연 스 럽 게 내 것 으로 테스트 를 해 볼 것 이다.코드 를 실행 해 보 았 는데,확실히 조회 수 를 늘 릴 수 있 었 다.
느 린 성장
기왕 이런 방안 이 실행 가능 하 다 는 것 은 사고방식 이 정확 하 다 는 것 을 설명 한다.그래서 우 리 는 자 연 스 럽 게 순환 을 쓸 생각 을 하 게 될 것 이다.이렇게 하면 대량의 조회 증 가 를 실현 할 수 있 지 않 습 니까?
예,저 는 확실히 이렇게 했 습 니 다.코드 는 다음 과 같 습 니 다:
i= 0
while i < 10:
url = 'http://jb51.net/marksinoberg/article/details/51501377'
getHtml(url,headers)
처음에는 블 로그 수가 늘 어 나 는 것 을 뚜렷하게 볼 수 있 습 니 다.(^ ^)히히...........................................................그러나 호황 이 길지 않 아 조회 수가 10 번 증가 한 것 을 발견 했다.그냥.그 다음 에 추가 할 수 없습니다.서버 가 저 에 게 이 방문 에 대해 어느 정도 제한 을 했 을 것 입 니 다.그렇지 않 으 면 이치 대로 말 하면 가능 할 것 입 니 다.
온갖 방법 을 다 강구 하 다.
'위 에는 정책 이 있 고 아래 에는 대책 이 있다'는 말 이 있 듯 이 나 는 당연히 이 제약 을 받 을 수 없다.그래서 나 는 나의 IP 를 기록 한 것 이 라 고 추측 했다.그리고 나의 방문 횟수 에 약간의 제한 을 추가 했다.
나의 해결 방법:
Windows IP 설정
로 컬 연결 에서 어떠한 작업 도 수행 할 수 없습니다.미디어 연결 이 끊 겼 습 니 다.
무선 랜 어댑터 무선 네트워크 연결:
특정 DNS 접 두 사 를 연결 합 니 다......:
로 컬 링크 IPv 6 주소.....:fe80::1d9f:d97b:fd16:1f6f%
기본 게 이 트 웨 이.............................................................
이 더 넷 어댑터 로 컬 연결:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다.
이 더 넷 어댑터 VMware 네트워크 어댑터 VMnet 1:
특정 DNS 접 두 사 를 연결 합 니 다......:
로 컬 링크 IPv 6 주소.....:fe80::359 d:e81d:741:f257%1
IPv 4 주소.......:192.168.229.1
서브 넷 마스크 . . . . . . . . . . . . : 255.255.255.0
기본 게 이 트 웨 이.............................................................
이 더 넷 어댑터 VMware 네트워크 어댑터 VMnet 8:
특정 DNS 접 두 사 를 연결 합 니 다......:
로 컬 링크 IPv 6 주소.....:fe80::94b1:d10f:b68:101d%1
IPv 4 주소......:192.168.244.1
서브 넷 마스크 . . . . . . . . . . . . : 255.255.255.0
기본 게 이 트 웨 이.............................................................
이 더 넷 어댑터 VirtualBox Host-Only Network:
특정 DNS 접 두 사 를 연결 합 니 다......:
로 컬 링크 IPv 6 주소.....:fe80::a5eb:545 c:7d 89:9451%
IPv 4 주소......:192.168.56.1
서브 넷 마스크 . . . . . . . . . . . . : 255.255.255.0
기본 게 이 트 웨 이.............................................................
터널 어댑터 isatap.{4F399971-B739-4B71-BD79-E48233EEC9BE}:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다......:
터널 어댑터 isatap.{1860 C94E-1007-4418-9A26-7D8AA8F06E 15}:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다......:
터널 어댑터 isatap.Ourdeda.cn:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다......:
터널 어댑터 isatap.dlut.edu.cn:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다......:
터널 어댑터 isatap.{6F7F27ED-942 E-4EFB-ACF2-A4 E8793B161D}:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다......:
C:\Users\Administrator>ipconfig /renew
Windows IP 설정
로 컬 연결 에서 어떠한 작업 도 수행 할 수 없습니다.미디어 연결 이 끊 겼 습 니 다.
무선 랜 어댑터 무선 네트워크 연결:
특정 DNS 접 두 사 를 연결 합 니 다......:
로 컬 링크 IPv 6 주소.....:fe80::1d9f:d97b:fd16:1f6f%12
IPv 4 주소......:192.168.5.70
서브 넷 마스크 . . . . . . . . . . . . : 255.255.252.0
기본 게 이 트 웨 이................................................................
이 더 넷 어댑터 로 컬 연결:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다.
이 더 넷 어댑터 VMware 네트워크 어댑터 VMnet 1:
특정 DNS 접 두 사 를 연결 합 니 다......:
로 컬 링크 IPv 6 주소.....:fe80::359 d:e81d:741:f257%14
IPv 4 주소.......:192.168.229.1
서브 넷 마스크 . . . . . . . . . . . . : 255.255.255.0
기본 게 이 트 웨 이.............................................................
이 더 넷 어댑터 VMware 네트워크 어댑터 VMnet 8:
특정 DNS 접 두 사 를 연결 합 니 다......:
로 컬 링크 IPv 6 주소.....:fe80::94b 1:d10f:b68:101d%15
IPv 4 주소......:192.168.244.1
서브 넷 마스크 . . . . . . . . . . . . : 255.255.255.0
기본 게 이 트 웨 이.............................................................
이 더 넷 어댑터 VirtualBox Host-Only Network:
특정 DNS 접 두 사 를 연결 합 니 다......:
로 컬 링크 IPv 6 주소.....:fe80::a5eb:545 c:7d 89:9451%16
IPv 4 주소......:192.168.56.1
서브 넷 마스크 . . . . . . . . . . . . : 255.255.255.0
기본 게 이 트 웨 이.............................................................
터널 어댑터 isatap.{4F399971-B739-4B71-BD79-E48233EEC9BE}:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다......:
터널 어댑터 isatap.{1860 C94E-1007-4418-9A26-7D8AA8F06E 15}:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다......:
터널 어댑터 isatap.Ourdeda.cn:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다......:
터널 어댑터 isatap.dlut.edu.cn:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다......:
터널 어댑터 isatap.{6F7F27ED-942 E-4EFB-ACF2-A4 E8793B161D}:
미디어 상태 . . . . . . . . . . . . : 미디어 가 끊 겼 습 니 다
특정 DNS 접 두 사 를 연결 합 니 다......:
네,다 들 보 셨 을 거 예요.핵심 적 인 두 가지 명령 은
//
ipconfig / release // ,
ipconfig /renew // IP
이렇게 하면 기본적으로 자신의 IP 를 바 꾸 는 데 효과 가 있다.특히 랜 사용자 들 에 게 는그래서 저 는 Python 코드 에서 시스템 의 cmd 명령 을 호출 하면 자신의 IP 를 동적 으로 바 꿀 수 있 습 니 다.제 가 원 하 는 걸 이 루 었 어 요.
어 려 운 문제
IP 문 제 는 해 결 됐 지만 이렇게 닦 으 면 너무 느 려 요.경로 표 업데이트 에 시간 이 필요 하기 때 문 입 니 다.이것 은 코드 운행 속도 에 비해 정말 느 리 고 느리다.그리고 매번 10 개의 조회 수 만 나 올 수 있다.어?좀 어색 하 긴 한데.이렇게 많은 힘 을 들 여서 겨우 열 개의 조회 수 를 닦 았 다.이 문 제 를 어떻게 해결 합 니까?
나 도 사실 이 문 제 를 진정 으로 해결 하지 못 했 지만 이 제한 도 특별히 강하 지 않다 는 것 을 알 게 되 었 다.왜냐하면 나 는 중간 에 밥 을 먹 었 기 때문에 돌아 올 때 원래 의 IP 가 다시 도 배 될 수 있다 는 것 을 알 게 되 었 다.한 45 분 정도 간격 이 죠!이것 은 돌파 점 이다.
소스 코드
사실 사고방식 은 매우 간단 하 다.바로 온갖 방법 을 다 강구 하여 문 제 를 해결 하 는 것 이다.상대방 의 시스템 이 아무리 견고 하 더 라 도 천의무봉 일 수 는 없 으 니 반드시 해결 방법 이 있 을 것 이다.다음은 코드.
# coding:utf-8
# __author__ = 'Mark sinoberg'
# __date__ = '2016/5/26'
# __Desc__ =
import urllib2,re
from bs4 import BeautifulSoup
def getHtml(url,headers):
req = urllib2.Request(url,headers=headers)
page = urllib2.urlopen(req)
html = page.read()
return html
def parse(data):
content = BeautifulSoup(data,'lxml')
return content
def getReadNums(data,st):
reg = re.compile(st)
return re.findall(reg,data)
url = 'http://jb51.net/marksinoberg/article/details/51493318'
headers = {
'referer':'http://jb51.net/',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'
}
i = 0
while i<24:
html = getHtml(url,headers)
content = parse(html)
result = content.find_all('span',class_='link_view')
print result[0].get_text()
i = i +1
코드 실행 결과:
D:\Software\Python2\python.exe E:/Code/Python/MyTestSet/ulib2/AddWatcher.py
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
115
115
Process finished with exit code 0
좋 은 점 은 BeautifulSoup 을 사용 하여 특정 위치의 데 이 터 를 캡 처 한 것 입 니 다.여 기 는 조회 수 에 대한 캡 처 입 니 다.위의 결과 에서 도 알 수 있 듯 이 한 IP 가 캡 처 한 데 이 터 는 양 이 제한 되 어 있 으 며 일반적으로 10~30 개 이 며 여 기 는 22 차례 방문 한 것 으로 보인다.전망 하 다.
사실 저 는 한 번 에 여러 번 갱신 하 는 효 과 를 얻 을 수 있 습 니 다.그러나 이렇게 하 는 것 은 특별한 정파 가 아 닙 니 다.그래서 저 는 제 생각 을 말씀 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.