Maison  >  Questions et réponses  >  le corps du texte

python - La connexion simulée Scrapy rencontre un problème 404

用python模拟登陆一个网站,一直遇到404问题,求指导!

代码

-- codage : utf-8 --

importer scrapy
à partir de la demande d'importation scrapy.http, FormRequest
à partir du sélecteur d'importation scrapy.selector

classe StackSpiderSpider(scrapy.Spider):

name = "stack_spider"
start_urls = ['https://stackoverflow.com/']

headers = {
    "host": "cdn.sstatic.net",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "en-US,en;q=0.5",
    "Connection": "keep-alive",
    "Content-Type":" application/x-www-form-urlencoded; charset=UTF-8",
    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0"
    }
#重写了爬虫类的方法, 实现了自定义请求, 运行成功后会调用callback回调函数
def start_requests(self) :
    return [Request("https://stackoverflow.com/users/login", 
    meta = {
    # 'dont_redirect': True, 
    # 'handle_httpstatus_list': [302],
    'cookiejar' : 1}, 
    callback = self.post_login)] #添加了meta
    
    #FormRequeset
def post_login(self, response) :
    # 请求网页后返回网页中的_xsrf字段的文字, 用于成功提交表单
    fkey = Selector(response).xpath('//input[@name="fkey"]/@value').extract()[0]
    ssrc = Selector(response).xpath('//input[@name="ssrc"]/@value').extract()[0]
    print fkey
    print ssrc
    #FormRequeset.from_response是Scrapy提供的一个函数, 用于post表单
    #登陆成功后, 会调用after_login回调函数
    return [FormRequest.from_response(response, 
                        meta = {
                        # 'dont_redirect': True,
                        # 'handle_httpstatus_list': [302],
                        'cookiejar' : response.meta['cookiejar']}, #注意这里cookie的获取
                        headers = self.headers,
                        formdata = {
                        "fkey":fkey,
                        "ssrc":ssrc,
                        "email":"1045608243@qq.com",
                        "password":"12345",
                        "oauth_version":"",
                        "oauth_server":"",
                        "openid_username":"",
                        "openid_identifier":""
                        },
                        callback = self.after_login,
                        dont_filter = True
                        )]
def after_login(self, response) :
    filename = "1.html"
    with open(filename,'wb') as fp:
        fp.write(response.body)
    # print response.body

调试信息
2017-04-18 11:19:23 [scrapy.utils.log] INFO : Scrapy 1.3.3 démarré (bot : text5)
2017-04-18 11:19:23 [scrapy.utils.log ] INFO : Paramètres remplacés : {'NEWSPIDER_MO
DULE' : 'text5.spiders', 'SPIDER_MODULES' : ['text5.spiders'], 'BOT_NAME' : 'text5'
}
2017-04-18 11:19 : 23 [scrapy.middleware] INFO : Extensions activées :
['scrapy.extensions.logstats.LogStats',
'scrapy.extensions.telnet.TelnetConsole',
'scrapy.extensions.corestats.CoreStats']
2017-04- 18 11:19:24 [scrapy.middleware] INFO : Middlewares de téléchargement activés :
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
'scrapy.downloadermiddlewares.defaultheaders.D efaultHeadersMiddleware' ,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
'scrapy.downloadermiddlewares.retry.RetryMiddleware',
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
'scrapy.downloadermiddlewares .redirect.RedirectMiddleware',
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
'scrapy.downloadermiddlewares.stats.DownloaderStats']
2017-04-18 11:19:24 [scrapy.middleware] INFO : Middlewares Spider activés :
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
'scrapy.spidermiddlewares.referer.RefererMiddleware',
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware' ,
'scrapy.spidermiddlewares .degree.DepthMiddleware']
2017-04-18 11:19:24 [scrapy.middleware] INFO : Pipelines d'éléments activés :
[]
2017-04-18 11:19:24 [scrapy.core.engine] INFO : Spider ouvert
2017-04-18 11:19:24 [scrapy.extensions.logstats] INFO : 0 page explorée (à 0 pag
es/min), grattée 0 élément (à 0 élément/min)
2017-04 -18 11:19:24 [scrapy.extensions.telnet] DEBUG : console Telnet en écoute sur 127.0.0.1:6023
2017-04-18 11:19:24 [scrapy.core.engine] DEBUG : exploré (200 ) <GET https://stack
overflow.com/users/login> (référent : Aucun)
1145f3f2e28e56c298bc28a1a735254b

2017-04-18 11:19:25 [scrapy.core.engine] DEBUG : exploré (404) <GET https://stack
overflow.com/search?q=&ssrc=&openid_username=&oauth_server=&oauth_version=&fkey =
1145f3f2e28e56c298bc28a1a735254b&password=wanglihong1993&email=1067863906%40qq.c
om&openid_identifier=> (référent : https://stackoverflow.com/use...
2017-04-18 11:19:25 [scrapy.spidermiddlewares.httperror] INFO : réponse ignorée
<404 https://stackoverflow.com/sea ...
auth_version=&fkey=1145f3f2e28e56c298bc28a1a735254b&password=wanglihong1993&emai
l=1067863906%40qq.com&openid_identifier=> : le code d'état HTTP n'est pas géré ou n'est pas autorisé
2017-04-18 11:19:25 [scrapy.core. moteur] INFO : Fermeture de l'araignée (terminé)
2017-04-18 11:19:25 [scrapy.statscollectors] INFO : Dumping Scrapy stats :
{'downloader/request_bytes' : 881,
'downloader/request_count' : 2,
'downloader/request_method_count/GET' : 2,
'downloader/response_bytes' : 12631,
'downloader/response_count' : 2,
'downloader/response_status_count/200' : 1,
'downloader/response_status_count/404 ' : 1 ,
'finish_reason' : 'terminé',
'finish_time' : datetime.datetime(2017, 4, 18, 3, 19, 25, 143000),
'log_count/DEBUG' : 3,
'log_count/INFO' : 8,
'request_owned_max' : 1,
'response_received_count' : 2,
'planificateur/retiré de la file d'attente' : 2,
'planificateur/supprimé/mémoire' : 2,
'planificateur/mis en file d'attente' : 2,
'planificateur/mis en file d'attente' /memory' : 2,
'start_time' : datetime.datetime(2017, 4, 18, 3, 19, 24, 146000)}
2017-04-18 11:19:25 [scrapy.core.engine] INFO : Spider fermé (terminé)

黄舟黄舟2711 Il y a quelques jours1013

répondre à tous(1)je répondrai

  • PHPz

    PHPz2017-05-18 11:03:22

    Frère, ton mot de passe a été divulgué

    répondre
    0
  • Annulerrépondre