我最近尝试使用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>
答案 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...