当前位置: 首页 > 面试题库 >

如何处理IncompleteRead:在python中

白才捷
2023-03-14
问题内容

我正在尝试从网站获取一些数据。然而,这又使我回来了incomplete read。我试图获取的数据是大量的嵌套链接。我在线进行了一些研究,发现这可能是由于服务器错误(在达到预期大小之前完成了分块的传输编码)。我还在此链接上找到了以上解决方法

但是,我不确定如何在我的案例中使用它。以下是我正在处理的代码

br = mechanize.Browser()
br.addheaders = [('User-agent', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;Trident/5.0)')]
urls = "http://shop.o2.co.uk/mobile_phones/Pay_Monthly/smartphone/all_brands"
page = urllib2.urlopen(urls).read()
soup = BeautifulSoup(page)
links = soup.findAll('img',url=True)

for tag in links:
    name = tag['alt']
    tag['url'] = urlparse.urljoin(urls, tag['url'])
    r = br.open(tag['url'])
    page_child = br.response().read()
    soup_child = BeautifulSoup(page_child)
    contracts = [tag_c['value']for tag_c in soup_child.findAll('input', {"name": "tariff-duration"})]
    data_usage = [tag_c['value']for tag_c in soup_child.findAll('input', {"name": "allowance"})]
    print contracts
    print data_usage

请帮助我。谢谢


问题答案:

您包含在问题中的链接只是执行urllib的read()函数的包装程序,该函数可以为您捕获所有不完整的读取异常。如果您不想实施整个补丁程序,则总是可以在尝试读取链接的地方插入try
/ catch循环。例如:

try:
    page = urllib2.urlopen(urls).read()
except httplib.IncompleteRead, e:
    page = e.partial

对于python3

try:
    page = request.urlopen(urls).read()
except (http.client.IncompleteRead) as e:
    page = e.partial


 类似资料:
  • 我在写一个背包问题的代码。有一个有重量容量的背包,你选择一个特定的项目组合,以找到最好的解决方案。然而,我试图随机生成可能的解决方案。因此,我的代码将选择随机数量的随机项(生成一个随机大小的列表),并测试解决方案是否可行(小于容量)或不可行(大于容量)。但是我对random.sample()有问题。为了得到一个随机大小的列表,我将k设置为leng(一个随机整数),总体是从给定的项目范围中挑选的项目

  • 这个问题要求解释在各种语言中如何在后台实现异常处理,但没有收到Python的任何回应。 我对Python特别感兴趣,因为Python通过EAFP原则“鼓励”异常抛出和捕捉。 我从其他SO答案中了解到,如果预计很少引发异常,try/catch块比if/etc语句更便宜,并且调用深度很重要,因为填充stacktrac很昂贵。这可能主要适用于所有编程语言。 python的特殊之处在于EAFP原则的高优先

  • 我有一个作为服务运行的Python脚本。它写入磁盘。如果用户在服务上调用systemctl stop,我想以自己的方式处理该命令,以降低文件损坏的风险。 如何捕获systemctl停止命令? 我在 /usr/lib/systemd/system的文件是: 我的Python脚本是:

  • 问题内容: 如果我期望像001或999这样的东西(这次让我们将期望值限制为001 … 999范围),并且传递了其他一些参数,并且想忽略任何意外内容,那么这将是处理命令行参数的简单表达式? 我知道,例如,如果我需要确定是否在参数之间传递了“ debug”,它将像这样: 如何确定是否通过了009或575? 所有这些都是预期的电话: 在这一点上,我不在乎这样的电话: …第一个-由于存在多个“数字”参数;

  • 问题内容: 我想要一个文本区域,可以处理按 Tab 键的情况。 在默认情况下,如果您按 Tab 键,则焦点将离开文本区域。但是,当用户想要在文本区域中输入 Tab 键时会怎样呢? 我可以捕捉到此事件并将焦点返回到文本区域并将标签添加到 当前 光标位置吗? 问题答案: