gpt4 book ai didi

python - 爬取: Unable to parse data into a human readable value

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:47 25 4
gpt4 key购买 nike

我正在使用 scrapy 抓取网站。一切都工作得很好,直到我遇到了这个关于几个值的特殊问题。

这是我获取值的方法

hxs.select("//table[@class='bodypad']//table/tr[1]/td//tr[10]//td[2]/text()").extract()[0].strip()

以下是输出

u'Rs.\xa05,000\n\r\n\t\t\t\t\t / -'

我还可以看到 strip() 方法也不适用于该值。以下是我的代码部分,该代码运行良好

hxs.select("//table[@class='bodypad']//table/tr[1]/td//tr[10]//td[2]/text()").extract()[2]

输出:

u'Rs. 1,000'

当我使用 .encode('ascii') 时,我得到了我所需要的:

'Rs. 1,000'

您能否建议我如何获得第一个值,在网站上它看起来像卢比。 5,000/- 。我想要得到类似的东西,而且 .encode('ascii') 不适用于第一个值。

编辑 - 示例 HTML 输入

<table width="100%" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tbody><tr class="table_bdrow1_style">
<td width="40%" class="table_header_style"><b>Minimum Initial Investment</b></td>
<td class="table_bdtext_style">
Rs.&nbsp;5,000

/ -
</td>
</tr>
<tr class="table_bdrow1_style">
<td width="40%" class="table_header_style"><b>Minimum Subsequent Investment</b></td>
<td class="table_bdtext_style">
Rs.&nbsp;1,000

/ -

</td>
</tr>

<!--
<tr class="table_bdrow1_style">
<td width="40%" class=table_header_style><b>Minimum RSP Investment</b></td>
-->
<!--<td class=table_bdtext_style width="55%">-</td>-->
<!--
<td class=table_bdtext_style>-</td>
</tr>
-->
<tr class="table_bdrow1_style">

<td width="40%" class="table_header_style"><b>Minimum Redemption Amount</b></td>
<td class="table_bdtext_style">Rs. 1,000</td>
</tr>
<!--
<tr class="table_bdrow1_style">
<td width="40%" class=table_header_style valign="top"><b>Minimum Holding</b></td>
<td class=table_bdtext_style>-
</td>
</tr>
<tr class="table_bdrow1_style">
<td width="40%" class=table_header_style><b>Cooling-off Period</b></td>
<td class=table_bdtext_style>-</td>
</tr>
-->
<tr class="table_bdrow1_style">
<td width="40%" class="table_header_style"><b>Minimum Holding Period</b></td>
<td class="table_bdtext_style">-</td>
</tr>
<tr class="table_bdrow1_style">
<td width="40%" class="table_header_style"><b>Transaction Time for Redemption</b></td>

<td class="table_bdtext_style">1:50 PM</td>
</tr>
<tr class="table_bdrow1_style">
<td width="40%" class="table_header_style"><b>Entry Load</b></td>
<td class="table_bdtext_style">-</td>
</tr>
<tr class="table_bdrow1_style">
<td width="40%" class="table_header_style"><b>Exit Load</b></td>
<td class="table_bdtext_style">0.25% if the investments is redeemed / switched out within 1 month form the date of allotment
</td>
</tr>
</tbody></table>`

最佳答案

\xa0Non-breaking space它在网页中显示为一个简单的空间。代码是否为 A0,超出 ASCII 范围 (0-127):

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
>>> u'Rs.\xa05,000\n\r\n\t\t\t\t\t / -'.encode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 3: ordinal not in range(128)

因此,在将其编码为 ASCII 之前,您必须手动将其替换为简单的空格。

默认str.strip仅去除空格,因此您应该手动去除字符 /-

这应该有效:

>>> u'Rs.\xa05,000\n\r\n\t\t\t\t\t / -'.replace(u'\xa0', u' ').encode().rstrip('-/ ').strip()
'Rs. 5,000'
>>>

关于python - 爬取: Unable to parse data into a human readable value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23406452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com