V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
d0v0b
V2EX  ›  Python

爬虫 post 请求 data 为 list 的情况求助

  •  
  •   d0v0b · 2020-11-11 11:19:16 +08:00 · 1935 次点击
    这是一个创建于 1510 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前情况,通过源 URL 得到 ajax,这个 ajax 在英文关键词情况下能请求到数据,但中文关键词情况无法返回值 初步判断是 encode 编码问题,但常用的几个都试了均不行,求助,感谢

    源 URL: http://ggzyjy.abazhou.gov.cn/Jyweb/searchList.aspx?searchName=%E9%87%87%E8%B4%AD&Type=%E7%AB%99%E5%86%85%E6%90%9C%E7%B4%A2

    Ajax: http://ggzyjy.abazhou.gov.cn/TrueLoreAjax/TrueLore.Web.WebUI.AjaxHelper,TrueLore.Web.WebUI.ashx

    payload:["TrueLore.Web.WebUI.WebAjaxService","SearchByCondition",[0,15,"查询关键词","",200,670,190,410,3,"","","Fbqssj DESC"],None,None]')

    ''' #python

    import requests
    import json
    
    url = "http://ggzyjy.abazhou.gov.cn/TrueLoreAjax/TrueLore.Web.WebUI.AjaxHelper,TrueLore.Web.WebUI.ashx"
    
    data = ["TrueLore.Web.WebUI.WebAjaxService","SearchByCondition",[0,15,"\xe5\x85\xb3\xe9\x94\xae\xe8\xaf\x8d","",200,670,190,410,3,"","","Fbqssj DESC"],None,None]
    
    headers = {
        'Ajax-method': 'AjaxMethodFactory',  # 这个很重要
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3738.0 Safari/537.36 Edg/75.0.107.0'
    }
    
    html = requests.post(url, headers=headers, data=json.dumps(data))
    

    '''

    3 条回复    2020-11-12 18:22:37 +08:00
    ila
        1
    ila  
       2020-11-11 22:34:07 +08:00 via Android
    eval 或 exec
    ticotic
        2
    ticotic  
       2020-11-12 02:36:43 +08:00
    dumps 把"\xe5\x85\xb3\xe9\x94\xae\xe8\xaf\x8d"当成 str 转义了
    sujin190
        3
    sujin190  
       2020-11-12 18:22:37 +08:00   ❤️ 1
    要用 Unicode 字符串啊,然后可以试试这样 json.dumps(result, ensure_ascii=False).encode("utf-8"),基本就和浏览器一致了,不加 ensure_ascii 在 encode 中文会变成\u 转义输出,似乎对方不支持处理\u 转义,而且似乎这个 json 后面还应该有个时间戳啊,注意看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1102 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:24 · PVG 03:24 · LAX 11:24 · JFK 14:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.