如何使用 Beautiful Soup 在 gridview 中訪問 div

西內

我正在嘗試從網站的多個頁面(例如,從第 1 頁到第 20 頁)archdaily抓取所有信息

html 結構如下所示:

    <div>
      <div class = 'afd-container-main afd-container-main--margin-bottom nft-container-main-search clearfix afd-mobile-margin search-container'>
        ::before
          <div>
            <div class='gridview'>
              <div>
                <div data-insights-category>
                  <a href = '...'> # this is the htmls i wanted

我使用的代碼是

soup = BeautifulSoup(html, 'html')
for foo in soup.find_all('div'):
    bar = foo.find('div', attrs={'class': 'afd-container-main afd-container-main--margin-bottom nft-container-main-search clearfix afd-mobile-margin search-container'})
    print(bar.text)

錯誤信息

AttributeError: 'NoneType' object has no attribute 'text'

我誤解了什麼嗎?

刺猬

注意:因為這個問題沒有透露,你是如何得到你的html的,所以回答起來並不容易。

如果使用requests,則不會以這種方式獲得結果,因為該站點會處理動態提供的內容。

替代方法:
  • requests通過 api獲取信息提供更多信息 - 類別、公司、...

    #iterate over pages
    for p in range(1,3):
        r = requests.get(f'https://www.archdaily.com/search/api/v1/us/projects/categories/residential-architecture?page={p}') #url of next page
        for item in r.json()['results']:
            # iterate over results and print title+url
            print(item['title'], item['url'])
    
  • html通過 Selenium渲染

例子

import requests

for p in range(1,2):
    r = requests.get(f'https://www.archdaily.com/search/api/v1/us/projects/categories/residential-architecture?page={p}') #url of next page
    for item in r.json()['results']:
        print(item['title'], item['url'])

輸出

Wooden House / derksen | windt architecten https://www.archdaily.com/972995/wooden-house-derksen-windt-architecten?ad_source=search&ad_medium=projects_tab
PLA2 House / Dersyn Studio https://www.archdaily.com/972939/pla2-house-dersyn-studio?ad_source=search&ad_medium=projects_tab
gjG House / BLAF Architecten https://www.archdaily.com/951845/gjg-house-blaf-architecten?ad_source=search&ad_medium=projects_tab
Leopoldo 1201 Residential Building / aflalo/gasperini arquitetos https://www.archdaily.com/972959/leopoldo-1201-residential-building-aflalo-gasperini-arquitetos?ad_source=search&ad_medium=projects_tab
Sayang House / Carlos Gris Studio https://www.archdaily.com/972773/sayang-house-carlos-gris-studio?ad_source=search&ad_medium=projects_tab
Nong Ho 17 House / Skarn Chaiyawat https://www.archdaily.com/972911/nong-ho-17-house-skarn-chaiyawat?ad_source=search&ad_medium=projects_tab
LÂM’s Home / AD+studio https://www.archdaily.com/972794/lams-home-ad-plus-studio?ad_source=search&ad_medium=projects_tab
Limestone House / John Wardle Architects  https://www.archdaily.com/972958/limestone-house-john-wardle-architects?ad_source=search&ad_medium=projects_tab
Quay Wall House / Thomas Kemme Architects https://www.archdaily.com/971781/quay-wall-house-thomas-kemme-architects?ad_source=search&ad_medium=projects_tab
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Beautiful Soup中查找特定的div文本

如何使用Beautiful Soup提取div的内容(图像)

如何在Beautiful Soup中复制元素?

使用Beautiful Soup在Python中解析网站

使用Python中的Beautiful Soup获取<div> class =“ some_class”>标记内的<p>标记的内容

Beautiful Soup - 在 div 后提取

如何使用Beautiful soup python将div中的所有详细信息导出到excel / csv?

使用Beautiful Soup提取div标签下的“ class”值

使用 Python 和 Beautiful Soup 进行抓取时 div 的问题

使用 Beautiful Soup 在多个 div 上循环的问题

HTML中的div元素上的Beautiful Soup循环

Python Beautiful Soup的div类中内容的打印值

如何使用 Beautiful Soup 在 `p` 标签中获取文本?

如何在Beautiful Soup中的标签上使用if语句?

如何在Beautiful Soup 4.7.1中使用“选择”?

如何单击/使用从 Python 中的 Beautiful Soup 解析的链接

使用 Beautiful Soup 提取文本

使用Beautiful Soup检索数据

以下链接使用 Beautiful Soup?

使用 Beautiful Soup 抓取网页

如何从网络抓取功能中删除某些信息(Beautiful Soup):

在Beautiful Soup中,如何动态搜索表格以查找特定元素?

如何在Beautiful Soup的href中剪贴文本?

使用 Beautiful Soup 和 Python 从 CSV 中抓取多个 URL

使用Beautiful Soup在跨度中查找部分类名称

使用Beautiful Soup查找XML中的所有属性

使用python检查孩子在Beautiful Soup 4中的标签

Beautiful Soup 4无法在Python 3.4.0中使用

使用 Python 和 Beautiful Soup 从表中获取列