【问题标题】:Python Requests/Selenium with BeautifulSoup not returning find_all every time带有 BeautifulSoup 的 Python Requests/Selenium 每次都没有返回 find_all
【发布时间】:2017-05-01 11:40:23
【问题描述】:

我正在尝试抓取 Airbnb,我有工作代码,但似乎他们已经更新了页面上的所有内容。它间歇性地返回正确的输出,然后有时会失败?它将随机返回第 3 页和第 17 页之间的 NoneType 错误。有没有办法让它继续尝试或者我的代码不正确?

for page in range(1,pages + 1):
        #get page urls
        page_url= url + '&page={0}'.format(page)
        print(page_url)


        #get page
        # browser.get(page_url)
        source = requests.get(page_url)
        soup = BeautifulSoup(source.text,'html.parser')

        #get all listings on page 
        div = soup.find('div',{'class':'row listing-cards-row'})



        #loop through to get all info needed from cards
        for pic in div.find_all('div',{'class':'listing-card-wrapper'}):
                  print(...)

最后一个 for 循环是我的错误开始发生的地方。这有时也会发生在我的其他功能中,有时它有时会起作用,有时却不起作用。我也已经尝试过 lxml 解析器了。

【问题讨论】:

  • 我想找到一个解决方案,因为请求要快得多,但我求助于使用 selenium,现在一切似乎都运行正常。慢慢地……但正确地。
  • 我注意到即使使用 selenium 也很奇怪的一件事是,每次我更改代码时,它都会在第一次出现与 requests 模块相同的错误时失败,但之后它可以完美运行。跨度>
  • 您收到的错误是什么?您应该检查 page_url 是否被正确接收,例如:source.raise_for_status(),然后再继续做汤。
  • Christos,我收到 find_all 的非类型错误。但是我在翻了几次汤之后终于发现,源代码标签大约每 2 次请求获取页面就会改变。这似乎是我的问题,因为我现在可以完美地使用请求和 Selenium。感谢您的回复!

标签: python selenium-webdriver web-scraping beautifulsoup python-requests


【解决方案1】:

在查看了几次汤后,我注意到程序每运行几次源代码标签就会发生变化。我抛出了一些异常,它似乎解决了我的“无”问题。

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 2019-12-29
    • 2017-06-07
    • 1970-01-01
    • 2018-03-28
    • 2015-02-05
    • 1970-01-01
    • 2019-12-12
    • 2019-03-25
    相关资源
    最近更新 更多