【问题标题】:Scraped Source code is incomplete - Loading Error抓取的源代码不完整 - 加载错误
【发布时间】:2019-08-08 17:57:24
【问题描述】:

使用 requests 和 urllib3 我抓取了 https://www.immowelt.de/liste/berlin/ladenflaechen 的“不完整”源代码。源代码不完整,因为它只包含 4 个列出的项目,而不是 20 个。查看生成的源代码,我们发现以下提示是“加载”/分页问题(第 2191 行)。我设法获得的完整源代码可以在这里查看:https://pastebin.com/FgTd5Z2Y

<div class="error alert js-ErrorGeneric t_center padding_top_30" id="js-ui-items_loading_error" style="display: none;">
                        Unbekannter Fehler, bitte laden Sie die Seite neu oder versuchen Sie es später erneut.
</div>

翻译错误文本:未知错误,请重新加载页面或稍后重试。

出现该错误后,将显示用于转到下一页的源代码。遗憾的是,第 1 页和第 2 页之间存在 16 个项目。

我试图找到一个更深入地研究请求库和 urllib3 的解决方案,以找到任何有用的东西。因此我尝试了一个流而不是简单的“get”。遗憾的是它对我没有任何帮助。

import requests
import urllib3

# using requests
url = "https://www.immowelt.de/liste/berlin/ladenflaechen"
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, features="html.parser")

# using urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'https://www.immowelt.de/liste/berlin/ladenflaechen')
rip = r.data.decode('utf-8')

我希望获得页面上的所有项目,但只获得了前 4 个。源代码似乎表明,简单的请求命令不会像在浏览器中那样加载整个源代码。

【问题讨论】:

    标签: web-scraping python-requests python-3.6 urllib3


    【解决方案1】:

    页面发出 POST 请求以获得更多结果。您可以执行初始请求以获取总结果计数,并执行后续 POST 以获取所有结果。请注意,我偏爱requests 库,并且我们可以高效地重用与Session 对象的连接。

    import requests, re
    from bs4 import BeautifulSoup as bs
    
    p = re.compile(r'search_results":(.*?),')
    
    with requests.Session() as s:  
        r = s.get('https://www.immowelt.de/liste/berlin/ladenflaechen')
        num_results = p.findall(r.text)[0]
        body = {'query': 'geoid=108110&etype=5','offset': 0,'pageSize': num_results}
        r = s.post('https://www.immowelt.de/liste/getlistitems', data = body)
        soup = bs(r.content, 'lxml')
        print(len(soup.select('.listitem')))
    

    【讨论】:

    • 非常感谢。这看起来恰到好处。我刚说到点子上,我也需要一个帖子,但弄清楚如何写它将是下一个问题。我现在很难找到汤里的数据,但我明天会找到的。非常感谢你的帮助!这让我很开心。问候!
    • 你好 QHarr,我再次努力让我的下一个爬虫在一起,我想使用你的方法。可悲的是,我很难找到正确的帖子以找到所有结果。你能解释一下你是如何找到正文“查询”和标签的吗?我现在想爬 'immobilienscout24.de/gewerbe-flaechen/de/berlin/berlin/…' :O
    • 如果您查看我的个人资料页面,会有一系列链接 .. 其中一些使用网络选项卡来查找动态提供页面的 xhr
    • 好的,我发现了一些其他有趣的提示,这些提示引导我使用他们的 api 找到我当前的解决方案 :) 非常感谢您的贡献,非常感谢您的知识分享。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2019-06-17
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多