如何更改迭代段的大小(Python(

时间:2013-12-29 05:52:14

标签: python size iteration

我最近尝试使用for循环迭代网页来源。此脚本检测网页,查找关键字并正确识别实例数。

然而,它会迭代一些大于128个字符的行,因此会将它们分段,使数据提取更加困难,而且通常看起来不干净。

我一直试图找到一种方法来增加这个数字,比如500(或512)个字符,但后来失败了。如果有人知道这样做的方法(它可能非常简单)。非常感谢。

import requests

r = requests.get('http://www.trademe.co.nz/Browse/SearchResults.aspx?sort_order=price_desc&searchString=punching+bag&rptpath=all&type=Search&searchType=all&generalSearch_keypresses=12&generalSearch_suggested=0&searchregion=16')

count = 0
for x in r:
    if 'Punch' and 'bag' and '50kg' in x:
        count = count + 1
    print x
    print len(x)

print count

这是我当前的代码,附带一些故障排除功能。通过trademe网站页面html获取三个关键字并进行搜索。

它通过html逐行迭代寻找关键字,但它截断为128个字符,因此将一些行分开,将它们视为不同的行。

所以当我打印' x'我想打印整行(最多约400个字符)而不是128个字符片段。

 Sample output:

e" src="http://images.trademe.co.nz/photoserver/lv2/94/201828294.jpg" alt="* No.1 Fitness * KANGO Black Punching Bag 50kg" align
128
ted">* No.1 Fitness * KANGO Black Punching Bag 50kg</a>
            <a id="ListView_CardRepeater_ctl06_card_GeneralCard_lis
128
2

这是第一个实例的完整行:

                <a id="ListView_CardRepeater_ctl06_card_GeneralCard_listingImageLink" href="/sports/martial-arts-boxing/bags/auction-678639714.htm"><img id="ListView_CardRepeater_ctl06_card_GeneralCard_listingImage" src="http://images.trademe.co.nz/photoserver/lv2/94/201828294.jpg" alt="* No.1 Fitness * KANGO Black Punching Bag 50kg" align="middle" style="border-width:0px;" /></a>

这是第二行的完整行:

            <a href="/sports/martial-arts-boxing/bags/auction-678639714.htm" id="ListView_CardRepeater_ctl06_card_GeneralCard_listingTitle" class="dotted">* No.1 Fitness * KANGO Black Punching Bag 50kg</a>

1 个答案:

答案 0 :(得分:0)

您使用了错误的迭代器。它将整个网页视为单个字符串,一次为您提供128个字符。这些不是网页中的实际行。

试试这个......

r = requests.get(<your url>)
for x in r.iter_lines():
    // do something...

或者,您也可以使用urllib2模块执行相同操作。

import urllib2
...
r = urllib2.urlopen(<your url >)
for x in r:
    // do something...