【问题标题】:How do you loop the URL output for BeautifulSoup?如何循环 BeautifulSoup 的 URL 输出?
【发布时间】:2021-03-28 06:02:06
【问题描述】:

所以我想提取每个数据块,中间有一个空格,现在我已经设置了循环,但是当我去打印时,它只提取了第二个玩家资料。知道如何解决这个问题吗?

如果它工作正常,输出将是:

Greg Oden C  #20
Born: Jan 22, 1988 (33 years old)
Birthplace/Hometown: Buffalo, New York
Nationality: United States
Height: 7-0 (213cm)     Weight: 273 (124kg)
Website: http://www.gregoden52.com/
Current NBA Status: Unrestricted Free Agent
Agent: Bill Duffy
Draft Entry: 2007 NBA Draft
Early Entry Info: 2007 Early Entrant
Drafted: Round 1, Pick 1, Portland Trail Blazers
Pre-Draft Team: Ohio State (Fr)
High School: Lawrence North High School [Indianapolis, Indiana]
AAU Team: Spiece Indy Heat

Carl Landry F
Current Team: N/A
Born: Sep 19, 1983 (37 years old)
Birthplace/Hometown: Milwaukee, Wisconsin  
Nationality: United States
Height: 6-9 (206cm)     Weight: 248 (112kg)
Hand: Right
Website: https://carllandry.com/
@CarlLandry
Current NBA Status: Unrestricted Free Agent
Agent: Mark Bartelstein, Reggie Brown
Draft Entry: 2007 NBA Draft
Drafted: Round 2, Pick 1, Seattle SuperSonics
Draft Rights Trade: SEA to HOU, Jun 28, 2007
Pre-Draft Team: Purdue (Sr)
High School: Vincent High School [Milwaukee, Wisconsin]

代码如下:

import csv ;import requests
from bs4 import BeautifulSoup
import csv
import re

url_list = ['https://basketball.realgm.com/player/player/Summary/1',
            'https://basketball.realgm.com/player/player/Summary/2']

for url in url_list:
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'html.parser')

player = soup.find_all('div', class_= 'wrapper clearfix container')[0]


playerprofile = re.sub(r'\n\s*\n', r'\n', player.get_text().strip(), flags=re.M)

print(playerprofile)

【问题讨论】:

  • soup = BeautifulSoup(r.text, 'html.parser') 将只有最后一个数据在循环之外,您可以考虑使用loop

标签: python beautifulsoup request


【解决方案1】:
import csv
import requests
from bs4 import BeautifulSoup
import csv
import re

url_list = ['https://basketball.realgm.com/player/player/Summary/1',
            'https://basketball.realgm.com/player/player/Summary/2']

for url in url_list:
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'html.parser')

    player = soup.find_all('div', class_='wrapper clearfix container')[0]

    playerprofile = re.sub(
        r'\n\s*\n', r'\n', player.get_text().strip(), flags=re.M)

    print(playerprofile + "\n")

此代码的工作方式如您所需的输出所示,似乎您的代码中播放器的解析和打印发生在循环完成后。循环的每次迭代都应该这样做,所以你可以将它缩进循环中。

【讨论】:

    猜你喜欢
    • 2015-03-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多