【问题标题】:Python requests module doesn't return full page during get requestPython 请求模块在获取请求期间不返回整页
【发布时间】:2018-07-08 21:00:45
【问题描述】:

当我使用浏览器向此 url 发出 get 请求时:http://www.waterwaysguide.org.au/waterwaysguide/access-point/4980/partial 会返回一个完整的 html 页面。但是,当我使用 python 请求模块发出 GET 请求时,只返回了部分 html,并且缺少核心内容。

如何更改我的代码以获取丢失的数据?

这是我正在使用的代码;

import requests
def get_data(point_num):
    base_url = 'http://www.waterwaysguide.org.au/waterwaysguide/access-point/{}/partial'
    r = requests.get(base_url)
    html_content = r.text
    print(html_content)
get_data(4980)

运行代码的结果如下图所示。 div class="view view-waterway-access-point-page... 里面的内容不见了。

<div>
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>
    <h4 class="modal-title">
        Point of Interest detail    </h4>

  </div>
  <div class="modal-body">
    <div class="view view-waterway-access-point-page view-id-waterway_access_point_page view-display-id-page view-dom-id-c855bf9afdfe945979f96b2301d55784">
        
  
  
  
  
  
  
  
  
</div>  </div>
  <div class="modal-footer">
    
    <button type="button" id="closeRemoteModal" class="btn btn-action" data-dismiss="modal">Close</button>
  </div>
</div>

【问题讨论】:

  • 请检查您的 base_url。

标签: python web-scraping python-requests


【解决方案1】:

可能是在页面加载后使用 javascript 呈现元素的情况。因此,您只能获得页面而不是 javascript 呈现的部分。
你可能想看看

https://medium.com/@hoppy/how-to-test-or-scrape-javascript-rendered-websites-with-python-selenium-a-beginner-step-by-c137892216aa

Web-scraping JavaScript page with Python

【讨论】:

    【解决方案2】:

    我发现了我犯的错误。 我从来没有使用过传递给函数的“point_num”参数,所以我的请求没有转到正确的 url。

    代码现在可以工作了,因为我已将行更改为

    r = requests.get(base_url.format(point_num))
    

    【讨论】:

      【解决方案3】:

      以下方法显示div class="view view-waterway-access-point-page...

      >>> from urllib.request import Request, urlopen
      >>> from bs4 import BeautifulSoup
      >>> url = 'http://www.waterwaysguide.org.au/waterwaysguide/access-
      point/4980/partial'
      >>> req = Request(url,headers={'User-Agent': 'Mozilla/5.0'})
      >>> webpage = urlopen(req).read()
      >>> print(webpage)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-15
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多