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

2020-11-11 11:19:16 +08:00
 d0v0b

目前情况,通过源 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))

'''

1900 次点击
所在节点    Python
3 条回复
ila
2020-11-11 22:34:07 +08:00
eval 或 exec
ticotic
2020-11-12 02:36:43 +08:00
dumps 把"\xe5\x85\xb3\xe9\x94\xae\xe8\xaf\x8d"当成 str 转义了
sujin190
2020-11-12 18:22:37 +08:00
要用 Unicode 字符串啊,然后可以试试这样 json.dumps(result, ensure_ascii=False).encode("utf-8"),基本就和浏览器一致了,不加 ensure_ascii 在 encode 中文会变成\u 转义输出,似乎对方不支持处理\u 转义,而且似乎这个 json 后面还应该有个时间戳啊,注意看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

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

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX