网页抓取时TD列表变空

时间:2021-07-25 07:20:31

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

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

我的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)

3 个答案:

答案 0 :(得分:0)

看起来 beautifulsoup 无法找到 <tbody> 并返回 None 而不是 body 元素列表。 虽然你可以尝试直接从表中提取<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)  

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

代码如下:

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']