【问题标题】:python requests loading big page solutionpython请求加载大页面解决方案
【发布时间】:2017-10-21 18:41:57
【问题描述】:

使用 Python 请求库打开大约 82,000 行的大页面时,我遇到了这个问题。在我尝试使用 urllib2 之前,这里出现错误“IncompleteRead”

现在有请求:

 r = requests.get(https://www.bhphotovideo.com/c/search?atclk=Model+Year_2016&Ns=p_PRICE_2|0&ci=13223&ipp=120&N=4110474291+4294948825+3665082495)
 page_source = r.content
 print page_source

源打印结果不完整,我看到结束标记,但不是从文档开始!

您知道如何加载此 URL 的全部内容吗? 82000 行。

【问题讨论】:

  • 这可能只是您使用的 shell 的限制。尝试将page_source 保存到文件中。
  • 但是为什么我只能看到源代码的结尾部分呢?
  • 因为大多数 shell 都有缓冲区限制。一次只能显示X 数量的字符,因此显然这些将是最后一个 X 字符。

标签: python parsing url get python-requests


【解决方案1】:

大多数(如果不是全部)shell 都有字符限制。将page_source 保存到文件确认requests.get 返回整个页面:

import requests

r = requests.get('https://www.bhphotovideo.com/c/search?atclk=Model+Year_2016&Ns=p_PRICE_2|0&ci=13223&ipp=120&N=4110474291+4294948825+3665082495')
page_source = r.text
with open('test.txt', 'w') as f:
    f.write(page_source.strip())

文件内容以<!DOCTYPE html> 开头,这是页面的开头。 另请注意,我使用.text 而不是.content 来获得页面源的更清晰表示。我还使用了.strip(),因为出于某种原因,此页面的源代码以无用的'\n' 开头。

另一种方法是简单地打印page_source 的前 100 个(或其他)字符:

print(page_source[:100])
# <!DOCTYPE html>
# <!--[if lt IE 7]>      <html class="ie lt-ie7"> <![endif]-->
# <!--[if IE 7]>   

【讨论】:

  • 知道了!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2011-06-28
  • 2020-01-03
  • 1970-01-01
相关资源
最近更新 更多