2016-05-12 6 views
1

Das Captcha wird zufällig generiert. Ich bekomme den Link von Captcha und lade es herunter. Danach crawle ich die Website mit diesem Captcha und Header, die auch korrekt eingestellt ist. Es erscheint jedoch ein Fehler, dass das Captcha falsch ist! Ich habe keine Ahnung, wie ich das lösen soll. Es scheint, dass wenn ich ein Captcha bekomme, es geändert wird. Kann mir jemand helfen? Jede Hilfe wird geschätzt.Python Web Spider: Wie Captcha lösen?

Mein Skript:

#coding=utf-8 
import urllib 
import urllib.request as urllib2 
import sys 
import http.cookiejar as cookielib 
import time 
import os 
time=time.time() 
cookiejar=cookielib.CookieJar() 
urlopener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar)) 
urllib2.install_opener(urlopener) 

urlopener.addheaders.append(('Referer', 'http://www.jsgsj.gov.cn:58888/mini/netweb/SMLibrary.jsp')) 
urlopener.addheaders.append(('Accept-Language', 'zh-CN')) 
urlopener.addheaders.append(('Host', 'www.jsgsj.gov.cn:58888')) 
urlopener.addheaders.append(('User-Agent', 'Mozilla/5.0 (compatible; MISE 9.0; Windows NT 6.1); Trident/5.0')) 
urlopener.addheaders.append(('Connection', 'Keep-Alive')) 

imgurl='http://www.jsgsj.gov.cn:58888/mini/netWebServlet.json?randImg=true&tmp='+str(time) 
outfile=open(r'code.jpg', 'wb') 
response=urllib2.Request(imgurl) 
html=urlopener.open(response) 
outfile.write(html.read()) 
outfile.close() 
authcode=raw_input('enter the code:') 
url_company='http://www.jsgsj.gov.cn:58888/mini/netWebServlet.json?codeCheck=true' 
data={'corpName':'苏州','yzm':authcode} 
html=urlopener.open(urllib2.Request(url_company,urllib.urlencode(data))) 
page=(html.read()) 
print ("html:",yzm, page) 
+0

Vielleicht sollten Sie versuchen, diese: https://pypi.python.org/pypi/captcha-solver/0.0.3 –

+0

gute Frage! – Veltro

Antwort

0

sollten Sie erwägen, eine Session-Objekt erstellen.

Wenn Sie Ihren Authentifizierungscode eingeben, hat sich die Sitzung geändert und auch die Chapta. Ich empfehle die Anfragen Modul so zu tun, (Erstellen einer Session-Objekt)

Python Requests