关于使用get reques的循环参数的建议

2024-04-20 01:04:58 发布

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

我正在尝试从this 2017 marathon获取每个跑步者的信息。问题是要获得我想要的信息,我必须点击每个跑步者的名字来获得他的partial splits。你知道吗

我知道我可以使用get请求来获取每个跑步者的信息。例如,对于运行程序Josh Griffiths,我可以使用url中的参数request.get。你知道吗

我的问题是我不知道如何找出idp这个术语,因为这个术语随着每个跑步者的变化而变化。你知道吗

我的问题如下:

  1. 是否可以使用一个循环来获取所有运行者的信息?我怎样才能解决这个问题?我的意思是,我不知道这个术语是如何确定的,也不知道如何用它来定义一个循环。

  2. 有没有更好的方法来获取每个跑步者的信息?我考虑过使用seleniumwebdriver,但这会非常慢。

任何建议都将不胜感激!你知道吗


Tags: 程序信息url参数getrequestthis名字
1条回答
网友
1楼 · 发布于 2024-04-20 01:04:58

您将需要使用类似BeautifulSoup的东西来解析HTML以获得所需的链接,这样就不需要尝试并找出如何构造请求。你知道吗

import requests
from bs4 import BeautifulSoup

base_url = "http://results-2017.virginmoneylondonmarathon.com/2017/"
r = requests.get(base_url + "?pid=list")
soup = BeautifulSoup(r.content, "html.parser")
tbody = soup.find('tbody')

for tr in tbody.find_all('tr'):
    for a in tr.find_all('a', href=True, class_=None):
        print
        print a.parent.get_text(strip=True)[1:]
        r_runner = requests.get(base_url + a['href'])
        soup_runner = BeautifulSoup(r_runner.content, "html.parser")

        # Find the start of the splits
        for h2 in soup_runner.find_all('h2'):
            if "Splits" in h2:
                splits_table = h2.find_next('table')

                splits = []
                for tr in splits_table.find_all('tr'):
                    splits.append([td.text for td in tr.find_all('td')])

                for row in splits:
                    print '  {}'.format(', '.join(row))

                break

对于每个链接,您需要跟随它并从返回的HTML解析拆分。脚本将显示如下:

Boniface, Anna (GBR)

  5K, 10:18:05, 00:17:55, 17:55, 03:35, 16.74, -
  10K, 10:36:23, 00:36:13, 18:18, 03:40, 16.40, -
  15K, 10:54:53, 00:54:44, 18:31, 03:43, 16.21, -
  20K, 11:13:25, 01:13:15, 18:32, 03:43, 16.19, -
  Half, 11:17:31, 01:17:21, 04:07, 03:45, 16.04, -
  25K, 11:32:00, 01:31:50, 14:29, 03:43, 16.18, -
  30K, 11:50:44, 01:50:34, 18:45, 03:45, 16.01, -
  35K, 12:09:34, 02:09:24, 18:51, 03:47, 15.93, -
  40K, 12:28:43, 02:28:33, 19:09, 03:50, 15.67, -
  Finish, 12:37:17, 02:37:07, 08:35, 03:55, 15.37, 1

Griffiths, Josh (GBR)

  5K, 10:15:52, 00:15:48, 15:48, 03:10, 18.99, -
  10K, 10:31:42, 00:31:39, 15:51, 03:11, 18.94, -
  ....

为了更好地理解它是如何工作的,您首先需要查看每个页面的HTML源代码。这样做的目的是在页面的结构中找到一些独特的东西,让您可以使用脚本来提取它。你知道吗

接下来,我建议您阅读BeautifulSoup的文档页面。这假设您了解HTML文档的基本结构。这个库提供了许多工具来帮助您从HTML中搜索和提取元素。例如查找链接的位置。并非所有的网页都可以这样解析,因为信息通常是使用Javascript创建的。在这些情况下,您需要使用selenium之类的工具,但在这种情况下,requestsbeautifulsoup可以很好地完成这项工作。你知道吗

相关问题 更多 >