URLLIB 과정을 학습 데이터 및 안티 파충류 파충류를 보내 ---------- 파이썬

송신 데이터 ------------------ ------------------ URLLIB
, 객체를 인스턴스화하기 위해 쿠키 배치 헤드와 데이터 .... urllib.request.Request (URL을 전송하는 방법의 일부를 추가, urllopen 방법은 직접 다른 헤드의 내용들에 추가 될 수 없으며 urllopen 동작 전에 쿠키도있다 데이터 = 없음, 헤더 = 없음, origin_req_host = 없음, 확인 불가능한 = 거짓, METHOD = 없음)
매개 변수 :
URL : URL을 요청하는 데 사용, 이것은 반드시 매개 변수이고, 다른 매개 변수는 선택 사항입니다.
데이터 : 입력 바이트 (바이트 스트림)을 통과해야한다. 모듈에서 요구를 urlencode urllib.parse 이익 () 코딩.
헤더 : 사전, 헤더에 직접 요청을 구성 매개 변수로 구성 할 수 있습니다. 해당 UserAgent 사전 일반적으로 배치 (와
사용자 에이전트)과 쿠키 (임시 신분증)
origin_req_host : 그것은 파티 요청하는 호스트 이름 또는 IP 주소를 의미합니다.
unverifiabl가 : e는 요청이 확인되지 나타내며, 기본 선택에 사용자가 충분한 권한을 가지고 있지 않음을 의미 False입니다
이 요청을 수신 옵션 결과.
방법 : 예컨대, POST를 얻고, 같은 놓는 요청을 표시하기 위해 사용되는 방법 문자열이다.
된 파라미터는 공통 헤더, 데이터, 방법있다
예 데이터 데이터는 데이터의 종류를 urlencode urllib.parse 방법을 사용할 수있다 송신 바이트
그들을 연결하는 방식으로 전송 된 데이터를 GET, 우리는 데이터 문자열 연결, 데이터 전송 요구를받을 필요가
잇기 부호화에 의해 사용될
urllib.parse 인코딩 및 디코딩 parse_qs 컨텐츠 부호화 방법을를 urlencode
 
예 :
데이터 = { "WD" '파이썬} 
데이터 urllib.parse.urlencode = (데이터)를 
데이터 
"WD = 파이썬 
데이터의 urllib.parse.parse_qs = (데이터) 
의 데이터 
{'WD ':'파이썬]}
 
예 :
URL = 'https://www.baidu.com/s?' 
수입 urllib.parse 
URLLIB 가져 오기 요청에서 
: { '파이썬' 'WD'} 데이터 = 
데이터 = urllib.parse.urlencode (데이터) 
URL = URL + 데이터 
A = request.Request (URL = URL) 
a.add_header ( '사용자 -agent ','모질라 / 6.0 (아이폰, CPU 아이폰 OS 8_0 맥 등 
OS X) AppleWebKit / 536.26 (게코 같은 KHTML) 버전 / 8.0 모바일 / 10A5376e 사파리 / 8536.25 ') 
대표 = request.urlopen (A)
대표. 독서()
 
POST 데이터 전송, 데이터 전송은 부호화 POST 요구된다.
예 :
urllib.parse 가져 오기 
URLLIB 가져 오기 요청에서 
캡처 도구를 사용하는 URL #URL의에서 
URL = 'HTTP : //**.**.com/login/' 
요청 = request.Request (URL) 
는 #header 헤드에 의해 객체가 requests.Request 인스턴스화 될 때 add_header 설정도 추가 할 수 있습니다 
request.add_header ( 
; '20071127 / 2.0 U- 제 3-2 리눅스는 i686) 게코 / 파이어 폭스 모질라 / 5.0 (X11'사용자 에이전트 ' 
0.11') 
데이터 = { '사용자 이름을 ':'멜론 ','암호 ''는 passwd에 ','AUTHCODE ':'1234 '} 
encoded_data = urllib.parse.urlencode (데이터) 
request.add_data (encoded_data) 
REQ = request.Request (URL, encoded_data)

 

------------------ 일반 반 파충류에 솔루션을 URLLIB ------------------
 
안티 파충류를 들어 일반 프로세스가 제공됩니다 headrs (요청 헤더)는 사용자 에이전트 (식별자), 쿠키 (임시 식별자
카드), 리퍼러 (도착). 일부 IP 주소 확인이 있는데, 프록시 IP 설정을 통해 우리가 할 수있는 서비스의 수를 결정합니다.
 
인스턴스 오브젝트가 예를 첨가하는 경우 사전에 첨가하고, () 방식으로 첨가 하였다 인스턴스화 후에 첨가
 
제공되는 사용자 에이전트 (식별자) URLLIB
= requests.Request 요청 (URL) 
request.add_header ( 
'사용자 에이전트', '모질라 / 5.0 (X11하며 U- 제 3-2 리눅스는 i686) 게코 / 파이어 폭스 20071127 / 2.0 
0.11') 
REP = request.urlopen (요청) 
REP. 읽기 () 
# 사용자 에이전트가 제공 add_header 수, 객체가 requests.Request 인스턴스화 될 때 추가 할 수 있습니다 
머리 = { 
'사용자 에이전트': '모질라 / 5.0 (X11하며, U, 리눅스는 i686) 게코 / 파이어 폭스 20071127 / 2.0 . 0.11 ' 
 } 
A = request.Request (URL 헤더 = 헤더) 
REP = request.urlopen (A) 
rep.read ()

 

URLLIB에서 참조 자 (모서리)가 구비
= requests.Request 요청 (URL) 
request.add_header ( '리퍼러', 'http://www.xxx.com/') 
REP = request.urlopen (요청) 
rep.read () 
add_header 설정에 따라 #referer, 개체 requests.Request의 인스턴스화시에 첨가 할 수 
헤드 = { '리퍼러'을 'http://www.xxx.com/'} 
A = request.Request (URL 헤더 = 헤더) 
REP = request.urlopen (A) 
rep.read ()

 

쿠키에 URLLIB (임시 신분증) 설정
한 가지 방법 : 수동 모의 방문 페이지 공원 후 블로그는 사용자 에이전트와 다음의 참조 자와 같은 개체의 이전 인스턴스 후 (수동) 같은 추가 헤더에 쿠키 헤더를 추가
 
예 :
= URL 'HTTPS : //www.cnblogs.com/lcyzblog/' 
URLLIB 가져 오기 요청에서 
REQ = request.Request (URL) 
req.add_header ( '쿠키', '_ = 조지아 GA1.2.439597965.1564067765; 키 .... 파라미터 ')는 무시된다 
REP = request.urlopen (REQ) 
UTF-. 8') rep.read (). 디코딩 ( ' 
#cookie 헤드 add_header 의해 제공 될 수 있고, 오브젝트가 인스턴스화 될 때 첨가 할 수있다 requests.Request의 
머리 = { 
'쿠키 ''= _ga GA1.2.439597965.1564067765; .... 주요 파라미터를 무시 ' 
} 
A = request.Request (URL 헤더 = 헤더) 
REP = request.urlopen (A) 
). (rep.read를 디코딩 ( "UTF 8 ')

 

두 번째 방법 : http.cookiejar 모듈을 사용하면 쿠키 착륙 가서 주도권을 쥐고 있습니다
클래스 모듈 HTTP.COOKIEJAR에 기재된
CookieJar는 : 관리 HTTP 쿠키 값, 쿠키에 의해 생성 된 저장 HTTP 요청, 나가는 HTTP 요청 객체는 쿠키를 추가 할 수 있습니다. 가비지 컬렉션도 손실됩니다 후 전체 쿠키는 인스턴스 쿠키 CookieJar를 들어, 메모리에 저장됩니다.
 
FileCookieJar 인스턴스를 생성하기위한 CookieJar에서 유래하고, 쿠키 파일에 저장된 쿠키 정보를 검색 : FileCookieJar (파일 이름, DELAYLOAD = 없음, 정책 = 없음). 파일 이름은 쿠키 파일 이름에 저장됩니다. DELAYLOAD은 True로 파일 액세스 대기 시간 액세스를 지원 즉, 파일에 저장된 파일이나 데이터를 읽는 데 필요한 경우에만 사용할 수 있습니다.
 
MozillaCookieJar (파일 이름, DELAYLOAD = 없음, 정책 = 없음) : FileCookieJar에서 유래는 Mozilla 브라우저와 호환를 Cookies.txt FileCookieJar 인스턴스를 만들 수 없습니다.
 
LWPCookieJar (파일 이름, DELAYLOAD = 없음, 정책 = 없음) : FileCookieJar에서 파생 직접 libwww - 펄와 함께 쿠키를 얻을 취득 후 설정 - Cookie3 파일 포맷 호환 표준 FileCookieJar 예제를 만들 수 없습니다
 
방법은 일반적으로 착륙하는 데 사용되지 않습니다, 여기 만의 아이디어를 제공하기 위해
http.cookiejar 수입 CookieJar의에서 
URL = 'http://www.baidu.com/' 
헤더 = { 
'사용자 에이전트': '모질라 / 5.0 (윈도우 NT 10.0; WOW64) (게코 같은 KHTM의 L) AppleWebKit / 537.36 크롬 / 53.0.2785.104 사파리 / 537.36 코어 / 1.53.3427.400 QQBrowser / 9.6.12513.400 ' 
} 
쿠키 = CookieJar () 

URLLIB 가져 오기 요청에서 
핸들러 = request.HTTPCookieProcessor (쿠키) 
오프너 = request.build_opener (핸들러) 
RESP = opener.open (URL) 
쿠키 
<CookieJar [쿠키 (버전 = 0, 이름 = 'BAIDUID'값 = '...忽略

  

쿠키 아이디어를 포스트 웹 사이트 ~ _ ~ 그래서 단지 아이디어를 제공, 착륙 사이트를 찾을 수없는 코드가 없기 때문입니다.
아이디어를 게시하고 거의 방법을 얻을, 그것은 열 opener.open이 열려있을 때 request.Request 될 단지 객체이며, 객체에 좋은 데이터를 전송하기 위해 추가되었습니다
예 :
from urllib import request
import urllib.parse
from http.cookiejar import CookieJar
url='http://www.xxx.com'
headers = {
User‐Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'}
data = {'username': 'xxxxxxxxx', 'password': 'xxxxxxx'} 
data = urllib.parse.urlencode(data).encode('utf‐8')
cookie=CookieJar()
handler = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(handler)
req = request.Request(url, data)
resp = opener.open(req)

 

总结方式:
第一步导入对应的包和模块
第二步设置url和一些反反爬虫的参数如headers中的user-agent...在get获取cookie时不需要
实例化在post时需要先实例化并传入post发送的data(数据)
第三步使用CookieJar实例化一个对象,步骤中我们称为cookie对象。接着再使用request下的
HTTPCookieProcessor(cookie对象)丢入在生成构建一个对象,称为handler对象。在使用
request下的build_opener(handler对象)丢入生成一个获取返回信息的对象,称为opener
对象,在post时要先用request. Request方式生成一个带有发送数据的对象,get时直接传入
url。
最后一步,用opener对象的open方式丢入request.Request生成的对象或者一个普通的url。 此时再去访问cookie这个对象就可以获得服务器返回的cookie数据
 
 
ip代理设置方式
首先需要获取ip代理,我们可以在百度搜索免费ip代理作为测试,在实际工作中建议购买稳定 的ip代理。
代理分成两部分。第一个叫协议,第二个为ip地址和端口号,在python中以字典的 形式传入
from urllib import request
url = "http://www.baidu.com"
proxy = {'HTTPS': '218.91.112.139:9999'}
proxy_handler = request.ProxyHandler(proxy)
opener = request.build_opener(proxy_handler)
req=request.Request(url)
response=opener.open(req)
response.getcode()
200

  

 

 

 
 
 
 
 
 
 
 
 
 
 

 

 
 
 

추천

출처www.cnblogs.com/lcyzblog/p/11266640.html