将html刮入csv fi

2024-09-25 00:32:49 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码从下一页中获取数据: “http://www.gbgb.org.uk/resultsMeeting.aspx?id=136005。在

它会刮取所有相关字段并将它们打印到屏幕上。不过,我想尝试将表格形式的数据打印到csv文件中,以便导出到电子表格或数据库中。在

在站点源HTML中,赛道、日期、日期时间(比赛时间)等级、距离和奖品都来自div类“resultsBlockheader”,在网页上形成比赛卡的顶部区域。在

源HTML中比赛的主体来自div类“resultsBlock”,其中包括finishingposition(Fin)Greyhound、Trap、SP、Time/Sec和Time distance。在

最终会变成这样

track,date,datetime,grade,distance,prize,fin,greyhound,trap,SP,timeSec,time distance

这是可能的还是我必须让它以表格形式打印到屏幕上,然后才能将其导出到csv。在

^{pr2}$

Tags: csv代码orgdivhttp屏幕timehtml
1条回答
网友
1楼 · 发布于 2024-09-25 00:32:49

不知道为什么不按照this answer中为上一个问题建议的代码-它实际上解决了将字段分组在一起的问题。在

下面是将trackdate和{}转储到csv的后续代码:

import csv

from bs4 import BeautifulSoup
import requests


html = requests.get("http://www.gbgb.org.uk/resultsMeeting.aspx?id=135754").text
soup = BeautifulSoup(html, 'lxml')

rows = []
for header in soup.find_all("div", class_="resultsBlockHeader"):
    track = header.find("div", class_="track").get_text(strip=True).encode('ascii', 'ignore').strip("|")
    date = header.find("div", class_="date").get_text(strip=True).encode('ascii', 'ignore').strip("|")

    results = header.find_next_sibling("div", class_="resultsBlock").find_all("ul", class_="line1")
    for result in results:
        greyhound = result.find("li", class_="greyhound").get_text(strip=True)

        rows.append({
            "track": track,
            "date": date,
            "greyhound": greyhound
        })


with open("results.csv", "w") as f:
    writer = csv.DictWriter(f, ["track", "date", "greyhound"])

    for row in rows:
        writer.writerow(row)

运行代码后results.csv的内容:

^{pr2}$

请注意,我在这里使用^{},但是如果您愿意,可以使用urllib2。在

相关问题 更多 >