python - 使用 beautifulsoup 循环页面
问题描述
我会从本网站https://www.transfermarkt.it/detailsuche/spielerdetail/suche/27564780刮取所有页面的播放器网址, 但我只能刮取第一个,为什么?我用 range() 写了一个 cicle
import pandas as pd
import requests
from bs4 import BeautifulSoup
list_url=[]
def get_player_urls(page):
headers = {
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0"
}
link = 'https://www.transfermarkt.it/detailsuche/spielerdetail/suche/27564780/page/{page}'
content = requests.get(link, headers=headers)
soup = BeautifulSoup(content.text, 'html.parser')
for urls in soup.find_all('a', class_='spielprofil_tooltip'):
url = 'https://www.transfermarkt.it' + urls.get('href')
print(url)
list_url.append(url)
return
for page in range(1,11,1):
get_player_urls(page)
df_url = pd.DataFrame(list_url)
df_url.to_csv('df_url.csv', index=False, header=False)
解决方案
您实际上并没有将页面输入到网址中。此外,无需将 return 放在您的功能上。你没有返回任何东西:
import pandas as pd
import requests
from bs4 import BeautifulSoup
list_url=[]
def get_player_urls(page):
headers = {
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0"
}
link = 'https://www.transfermarkt.it/detailsuche/spielerdetail/suche/27564780/page/{page}'.format(page=page) #<-- Add this
content = requests.get(link, headers=headers)
soup = BeautifulSoup(content.text, 'html.parser')
for urls in soup.find_all('a', class_='spielprofil_tooltip'):
url = 'https://www.transfermarkt.it' + urls.get('href')
print(url)
list_url.append(url)
for page in range(1,11,1):
get_player_urls(page)
df_url = pd.DataFrame(list_url)
df_url.to_csv('df_url.csv', index=False, header=False)
推荐阅读
- php - 如何更新 php5.6-curl 以便它可以验证新的 LetsEncrypt X1 证书?
- java - 我们可以在 Spring Boot 中为 SecretManagerTemplate 传递不同的凭据吗?
- php - 如何在 laravel 中获取订单商品销售报告?
- sockets - 如何设置以下原始套接字场景?
- python - linux上的电报bot exec GUI应用程序
- python - 将颜色条移近热图(Seaborn)
- r - 嵌套不完美时在空间上连接嵌套的多边形
- swift - iOS RealityKit。更改实体的翻译会导致意外行为
- sql-server - 如何将表变量名映射到 tempdb 表名?
- devspace - 用于在容器更新后在容器中运行测试的 DevSpace 挂钩