recherche

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

python - 关于scrapy爬虫AJAX页面

当点击加载的时候,用Chrome 开发者工具,可以看到Network中,实际请求的链接为:

FormData为:

urlencode:

        ...
        data = response.css('.zh-general-list::attr(data-init)').extract()
        param = json.loads(data[0])
        topic_id = param['params']['topic_id']
        # hash_id = param['params']['hash_id']
        hash_id = ""
        for i in range(32):
            params = json.dumps({"topic_id": topic_id,"hash_id": hash_id, "offset":i*20})
            payload = {"method": "next", "params": params, "_xsrf":_xsrf}
            print payload
            yield scrapy.Request(
                    url="https://m.zhihu.com/node/TopicsPlazzaListV2?" + urlencode(payload),
                    headers=headers,
                    meta={
                        "proxy": proxy,
                        "cookiejar": response.meta["cookiejar"],
                    },
                    callback=self.get_topic_url,
            )
{'_xsrf': u'161c70f5f7e324b92c2d1a6fd2e80198', 'params': '{"hash_id": "", "offset": 140, "topic_id": 253}', 'method': 'next'}
^C^C^C{'_xsrf': u'161c70f5f7e324b92c2d1a6fd2e80198', 'params': '{"hash_id": "", "offset": 160, "topic_id": 253}', 'method': 'next'}
2016-05-09 11:09:36 [scrapy] DEBUG: Retrying <GET https://m.zhihu.com/node/TopicsPlazzaListV2?_xsrf=161c70f5f7e324b92c2d1a6fd2e80198&params=%7B%22hash_id%22%3A+%22%22%2C+%22offset%22%3A+80%2C+%22topic_id%22%3A+253%7D&method=next> (failed 1 times): [<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', 'SSL3_READ_BYTES', 'ssl handshake failure')]>]
2016-05-09 11:09:36 [scrapy] DEBUG: Retrying <GET https://m.zhihu.com/node/TopicsPlazzaListV2?_xsrf=161c70f5f7e324b92c2d1a6fd2e80198&params=%7B%22hash_id%22%3A+%22%22%2C+%22offset%22%3A+40%2C+%22topic_id%22%3A+253%7D&method=next> (failed 1 times): [<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', 'SSL3_READ_BYTES', 'ssl handshake failure')]>]
黄舟黄舟2807 Il y a quelques jours1348

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

  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:46:32

    DEBUG : Réessayer <GET C'est difficile à dire à partir d'une invite aussi volumineuse. . . La demande lorsque vous capturez le paquet est postée. Pourquoi utiliser get lorsque vous utilisez Scrapy ? . .

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:46:32

    L'écriture d'un robot doit être effectuée étape par étape, pas en une seule étape, sinon vous ne saurez pas ce qui ne va pas. Généralement, vous devez d'abord obtenir les données que vous souhaitez, puis analyser et filtrer.
    Envoyez d'abord une demande pour voir si vous pouvez obtenir les données souhaitées. Sinon, l'URL peut être erronée ou interceptée

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:46:32

    #coding=utf-8
    
    import requests
    
    headers = {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}
    url = 'https://www.zhihu.com/node/TopicsPlazzaListV2'
    data = 'method=next&params=%7B%22topic_id%22%3A833%2C%22offset%22%3A0%2C%22hash_id%22%3A%22%22%7D'
    
    r = requests.post(url, data, headers=headers)
    print r.text

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-17 17:46:32

    Le garçon vous apprend un grand mouvement.

    répondre
    0
  • Annulerrépondre