【问题标题】:TD list turn empty when I web scraping当我网页抓取时,TD列表变为空
【发布时间】:2021-10-01 14:21:39
【问题描述】:

我尝试从官方银行业数据中获取一些每周数据。然而,即使代码正常工作,列表也是一个空列表。

我的python代码如下:

import requests
from bs4 import BeautifulSoup

import urllib.request
url="http://www.bddk.org.tr/BultenHaftalik"
r=requests.get(url)
html_content=r.text
soup=BeautifulSoup(html_content,"html.parser")

veri_tablosu=soup.find('table', class_='table table-bordered table-condensed verigostermetablosu responsive-table')

for veri in veri_tablosu.find_all('tbody'):
    rows=veri.find_all('tr')
    for row in rows:
        basliklar=row.find('td', class_= 'ortala')
        print(basliklar)

【问题讨论】:

    标签: python html web-scraping beautifulsoup html-table


    【解决方案1】:

    beautifulsoup 似乎无法找到 <tbody> 并返回 None 而不是正文元素列表。 虽然你可以尝试直接从表中提取<tr>

    veri_tablosu=soup.find('table', class_='table table-bordered table-condensed verigostermetablosu responsive-table')
    for row in veri_tablosu.find_all('tr'):
        basliklar=row.find('td', class_= 'ortala')
        print(basliklar)  
    

    【讨论】:

      【解决方案2】:

      问题是 tobdy 不在源 html 中,因此您不能使用 find_all('tbody')

      只需使用for veri in veri_tablosu.find_all('tr')

      【讨论】:

        【解决方案3】:

        这是因为<tbody> 不存在于soup 中。所以你得到一个空的结果。

        不使用<tbody>,您可以直接选择<tr> 名称为satir 的行<tr>因为那是数据所在的位置)并提取您需要的数据。

        代码如下所示:

        basliklar = []
        for veri in veri_tablosu.findAll('tr', class_='satir'):
            basliklar.append(veri.find('td', class_= 'ortala').text)
        print(basliklar)
        
        Output
        
        ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-15
          • 2019-12-31
          • 2021-12-22
          • 1970-01-01
          • 1970-01-01
          • 2021-03-26
          相关资源
          最近更新 更多