稳稳C9
2020-12-15 11:12
采纳率: 50%
浏览 62

scrapy中请求携带json与request有什么区别?【赏】

 

上面两幅图,第二幅为request版本,一切正常能够得到数据,第一幅为scrapy版本

目前百度已参考:(实际百度了很多)

http://www.cocoachina.com/articles/69939

https://www.cnblogs.com/qiaoer1993/p/10802735.html

https://www.v2ex.com/t/533939

集中方法在,请求头加json那个,第二就是什么body,method指定,都试过了,奇怪。

究竟有什么区别?怎么才能改正确?

 

request代码如下

import scrapy
import json
import requests


class BxwSpiderSpider(scrapy.Spider):
    name = 'bxw_spider'

    api_headers = {
        'Host': 'mpapi.baixing.com',
        'Connection': 'keep-alive',
        'Content-Length': '24',
        'BAIXING-SESSION': '$2y$10$iYbdcOD0tqZQWK1ITZc6PuIMfVDUsxItUQwepiF1VyC00ti24fPcG',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat',
        'content-type': 'application/json',
        'env_version': '7.0.9',
        'model': 'microsoft',
        'network_type': 'wifi',
        'os': 'Windows',
        'os_version': '10',
        'source': '70',
        'source_params': '',
        'source_path': '',
        'template_version': 'Ver1.3.6',
        'track_id': '1607997570581-6558221-0b293e26ae2048-15816961',
        'udid': 'a382863f-92eb-45aa-a2b0-bca844ca6dd9',
        'Referer': 'https://servicewechat.com/wxd9808e2433a403ab/42/page-frame.html',
        'Accept-Encoding': 'gzip, deflate, br',
    }

    url = 'https://mpapi.baixing.com/v1.3.6/'  # API接口

    def start_requests(self):
        index_json = '{"listing.getAds": {"areaId": "m28", "categoryId": "gongzuo", "page": 1}}'  # 2 3

        # yield scrapy.Request(
        #     url=self.url,
        #     headers=self.api_headers,
        #     method='POST',
        #     body=index_json,
        #     callback=self.parse,
        #     dont_filter=True)

        yield scrapy.FormRequest(
            url=self.url,
            headers=self.api_headers,
            formdata=eval(index_json),
            callback=self.parse,
            dont_filter=True)

    def parse(self, response):
        print('程序进入')
        res_json = json.dumps(response.text)
        print(res_json)

scrapy代码如下:

import scrapy
import json
import requests


class BxwSpiderSpider(scrapy.Spider):
    name = 'bxw_spider'

    api_headers = {
        'Host': 'mpapi.baixing.com',
        'Connection': 'keep-alive',
        'Content-Length': '24',
        'BAIXING-SESSION': '$2y$10$iYbdcOD0tqZQWK1ITZc6PuIMfVDUsxItUQwepiF1VyC00ti24fPcG',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat',
        'content-type': 'application/json',
        'env_version': '7.0.9',
        'model': 'microsoft',
        'network_type': 'wifi',
        'os': 'Windows',
        'os_version': '10',
        'source': '70',
        'source_params': '',
        'source_path': '',
        'template_version': 'Ver1.3.6',
        'track_id': '1607997570581-6558221-0b293e26ae2048-15816961',
        'udid': 'a382863f-92eb-45aa-a2b0-bca844ca6dd9',
        'Referer': 'https://servicewechat.com/wxd9808e2433a403ab/42/page-frame.html',
        'Accept-Encoding': 'gzip, deflate, br',
    }

    url = 'https://mpapi.baixing.com/v1.3.6/'  # API接口

    def start_requests(self):
        index_json = '{"listing.getAds": {"areaId": "m28", "categoryId": "gongzuo", "page": 1}}'  # 2 3

        # yield scrapy.Request(
        #     url=self.url,
        #     headers=self.api_headers,
        #     method='POST',
        #     body=index_json,
        #     callback=self.parse,
        #     dont_filter=True)

        yield scrapy.FormRequest(
            url=self.url,
            headers=self.api_headers,
            formdata=eval(index_json),
            callback=self.parse,
            dont_filter=True)

    def parse(self, response):
        print('程序进入')
        res_json = json.dumps(response.text)
        print(res_json)

之前爬另外一个网站,也是POST种携带请求参数,request版本就能成功,scrapy就是不行,是我使用姿势不对?

非常疑惑,百度过很多了!!!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • 放风喽 2020-12-16 13:32
    已采纳

    兄弟,半个小时的辛苦

    class CeshiSpider(scrapy.Spider):
        name = 'ceshi'
        api_headers = {
            'Host': 'mpapi.baixing.com',
            'BAIXING-SESSION': '$2y$10$iYbdcOD0tqZQWK1ITZc6PuIMfVDUsxItUQwepiF1VyC00ti24fPcG',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat',
            # 'content-type': 'application/json',
            # 'Content-Length': '24',
            'Referer': 'https://servicewechat.com/wxd9808e2433a403ab/42/page-frame.html',
        }
    
        url = 'https://mpapi.baixing.com/v1.3.6/'  # API接口
        def start_requests(self):
            index_json = {"listing.getAds": {"areaId": "m28", "categoryId": "gongzuo", "page": 1}}  # 2 3
    
            yield scrapy.Request(
                url=self.url,
                method="POST",
                headers=self.api_headers,
                body=json.dumps(index_json),
                callback=self.parse,
                dont_filter=True)
    
        def parse(self, response):
            print("下面是结果")
            print(response.text)
    打赏 评论
  • 放风喽 2020-12-15 12:55
    打赏 评论
  • 稳稳C9 2020-12-15 13:40

    你这篇文章我看了,我试过了,还是不明白存在什么问题。。。。

    打赏 评论
  • 稳稳C9 2020-12-15 13:53

    试了好多,还是不太行。。。

    打赏 评论
  • 放风喽 2020-12-15 15:23

    这是我自己的测试端口,下面是结果

     

    D:\项目总库\pazhuti>scrapy crawl ceshi --nolog
    下面是结果


    <!DOCTYPE html>

     

    获得了网站的正确回应
    上面的URL是公网的,你可以试试

    http://115.29.110.126/user/docs/

    打赏 评论
  • 稳稳C9 2020-12-16 10:40

    您好,我爬了很多招聘网站,这个网站是百姓网站,问题在于其它的使用方式我能够提交,按照请求携带json参数,或者其它参数都可以成功,你有测试这个参数代码嘛?我贴上了scrapy代码,你可以试下,最好使用我问题贴的request和scrapy比对下,我相信你也有这个疑问

    打赏 评论
  • 稳稳C9 2020-12-17 18:10

    我加你QQ把,csdn最低冲100,我没那么多,我给你转10元意思下怎么样?

    打赏 评论
  • 稳稳C9 2020-12-17 18:13

     

    打赏 评论
  • 稳稳C9 2020-12-17 18:14

    非常感谢,一直以来,我认为请求头丰富越好,经过测试,原来是

    'Content-Length': '24',的问题,我把这个一注释就好了,非常感谢!!!!!!!
    打赏 评论
  • 放风喽 2020-12-17 20:15

    不需要。我来就是看别人都会遇上什么问题的,不是为了酬劳。

    打赏 评论
  • 稳稳C9 2020-12-18 16:38

    非常感谢你了,谢谢我关注你,好人一生平安

     

    打赏 评论

相关推荐 更多相似问题