首页 > 解决方案 > 如何使用 BeautifulSoup 从网站获取特定的子类?

问题描述

我想从这个链接获取表格:Soccer Players Market Values 我设法这样做了,代码如下:

def few(urls, file):
f = open(file, 'a', newline='', encoding="utf-8")
writer = csv.writer(f)
url = urls
page = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(page.content, 'lxml')
tbody = soup('table', {"class": "items"})[0].find_all('tr')
for row in tbody:
    cols = row.findChildren(recursive=False)[1:]
    exclude = [0, 3, 4, 6, 7, 8]
    cols = [ele.text.strip() for ele in cols[:] if ele not in exclude]
    writer.writerow(cols)

我的问题是,我想从第一列中获取名称(例如:“Ram Strauss”),而不是它包含的所有数据。

你能帮忙吗?非常感谢!

标签: pythonhtmlbeautifulsoup

解决方案


import requests , csv

def SaveAsCsv(list_of_rows,file_name):
    try:
        print('\nSaving CSV Result')
        with open(file_name, 'a',  newline='', encoding='utf-8') as outfile:
            writer = csv.writer(outfile)
            writer.writerow(list_of_rows)
            print("rsults saved successully")
    except PermissionError:
        print(f"Please make sure {file_name} is closed \n")


def fetch_data(url,file_name='test.csv'):
        page = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
        if page.status_code == 200 :
                soup = BeautifulSoup(page.content, 'lxml')
                header = [col_name.text.strip() for col_name in soup.select('table.items thead th')[1:]]
                SaveAsCsv(header,file_name)
                rows = soup.select('table.items tbody tr')
                for row in rows:                        
                        name_tag = row.select('img.bilderrahmen-fixed')
                        if name_tag:
                                name = name_tag[0].get('title')
                                tds  = row.select('td')[5:]
                                cols = [ele.text.strip() for ele in tds]
                                if cols :
                                        cols.insert(0,name) 
                                        SaveAsCsv(cols,file_name)

fetch_data('https://www.transfermarkt.com/hapoel-acre/kader/verein/6025/saison_id/2017/plus/1')

在此处输入图像描述


推荐阅读