通过 Scrapy 模拟 Ajax 请求 - 无法解码 unicode 响应



我在我的代码中成功地模拟了Ajax请求,这是我得到的确切响应的一部分(写入文件/打印到控制台)

\u003CTR\u003E

\u003CTD 类=\"box_pro_high1\" 样式=\"宽度:166px;高度:302px;\"\u003e\r \u003cdiv 对齐=\"居中\"\u003e\r \u003cdiv 样式=\"宽度:160px;高度:100px;显示:表格单元格;垂直对齐:中间;文本对齐:居中;\"\u003E\r \u003CA HReF=\"/天线-连接器-附件/适配器-连接器/SMA-R-A-8906/SMA390-8153/PD/\" rel=\"PD.aspx?\u0026amp;PID=8153\u0026amp;FID=8906\u0026amp;cid=WES1863229926N\u0026amp;PCR=WES596880305N\u0026amp;Path=hJhp9Eo4i4SmypehwrGDk1dSIV1a%2fzDdQ39QdmWB6NLz%2bOfhVWXfF%2buXHGazJfLb25nPLAnzP5cA1EMeQ6IUDQMZmGxNYGTr8ARSiPUbiPN8GaSYHamQH9%2bSCQaRu3yY8Nv8%2fB75yy4Ud DKkWwfIpY9zTNKSLx0anQ%2fNUrFOtGvph5cABhGlLBWHi%2fFJQEXw4P9%2bLdS%2fn1Q%3d\" class=\"tx_3\"\u003e\r \r \u003cimg data-original=\"/prodimages/section7_th/sma390.jpg\" style=\"max-height:100像素;最大宽度:100px;\" border=\"0\" alt=\"SMA390 SMA R/A\" class

=\"lazy\" src=\"\"/\u003e\r \u003c/a\u003e\r \u003c/div\u003e\r \u003cdiv class=\"familyheader\" style=\"height:30px;\"\u003e\r \r \u003ca href=\"/天线-连接器-附件/适配器-连接器/sma-r-a-8906/sma390-8153/pd/\"

我正在尝试将其传递给BeautifulSoup/lxml,但它(可以理解)失败了。

通过简单的谷歌搜索,我找到了这个网站:http://www.online-toolz.com/tools/text-unicode-entities-convertor.php

一键"解码"(我不确定它是正确的术语)此字符串以:

<img data-original="/prodimages/section7_th/sma390.jpg" style="max-height:100px; max-width:100px;" border="0" alt="SMA390 SMA R/A"  class="lazy" src=""/>
</a>
</div>
<div class="familyheader" style="height:30px;">
<a href="/antennas-connectors-accessories/adaptors-connectors/sma-r-a-8906/sma390-8153/pd/" 

这正是我想要的。但我无法在 python 中模拟这种行为。

我尝试过使用 ord()、decode() 等,但似乎无法解决。

这是Unicode转义字符串,你可以简单地将其转换为可读的html:

s = "u003ctru003eu003c ......."
s = s.decode('unicode-escape')

现在,您可以将s字符串视为与 beautifulsoup 或 scrapy 的选择器一起使用的正确响应。

对于 python3 甚至更简单

s = str.encode(s)

最新更新