gpt4 book ai didi

python - 如何同时抓取两页并在一个嵌套的 'for-loop' 中生成两个不同的列表?

转载 作者:行者123 更新时间:2023-11-28 20:35:44 24 4
gpt4 key购买 nike

我正在从具有相同 DOM 结构的两个 URL 中抓取数据,因此我试图找到一种同时抓取它们的方法。
唯一需要注意的是,从这两个页面抓取的数据需要以明确命名的列表结尾。

为了举例说明,这是我尝试过的:

import os
import requests
from bs4 import BeautifulSoup as bs


urls = ['https://www.basketball-reference.com/leaders/ws_career.html',
'https://www.basketball-reference.com/leaders/ws_per_48_career.html',]

ws_list = []
ws48_list = []

categories = [ws_list, ws48_list]

for url in urls:
response = requests.get(url, headers=headers)
soup = bs(response.content, 'html.parser')
section = soup.find('table', class_='stats_table')
for a in section.find_all('a'):
player_name = a.text
for cat_list in categories:
cat_list.append(player_name)
print(ws48_list)
print(ws_list)

当我为其页面拍摄 2 个独特的列表时,这最终打印了两个相同的列表。
我该如何做到这一点?用另一种方式编码会更好吗?

最佳答案

而不是试图附加到已经存在的列表中。只是创造新的。创建一个函数来执行抓取并将每个 url 依次传递给它。

import os
import requests
from bs4 import BeautifulSoup as bs

urls = ['https://www.basketball-reference.com/leaders/ws_career.html',
'https://www.basketball-reference.com/leaders/ws_per_48_career.html',]

def parse_page(url, headers={}):

response = requests.get(url, headers=headers)
soup = bs(response.content, 'html.parser')
section = soup.find('table', class_='stats_table')
return [a.text for a in section.find_all('a')]


ws_list, ws48_list = [parse_page(url) for url in urls]

print('ws_list = %r' % ws_list)
print('ws8_list = %r' % ws48_list)

关于python - 如何同时抓取两页并在一个嵌套的 'for-loop' 中生成两个不同的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46344359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com