首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环期间刮取html时没有表。

循环期间刮取html时没有表。
EN

Stack Overflow用户
提问于 2021-02-17 12:43:46
回答 1查看 29关注 0票数 1

第一个问题!

我正在抓取一个体育网页,该网页将每个运动员的个人资料页面作为一个页面名+‘运动员的名字’+‘运动员的姓氏’。我在用蟒蛇。

我使用请求函数,因为它是https类型的url,所以我运行下面的代码。我想在页面上找出每个运动员的W/L比,更喜欢的获胜方法等等。我发现的问题是,不管出于什么原因,这一页并没有每一个运动员的个人资料,其中有一个表反映他们的职业生涯,只有其中一些运动员这样做。

代码语言:javascript
复制
import requests
my_header = { "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36", "X-Requested-With": "XMLHttpRequest" }
html_page_text = requests.get('https://www.bjjheroes.com/a-z-bjj-fighters-list',my_header)
all_athletes = pd.read_html(html_page_text.text);

for i in range(len(all_athletes)):
    url=('https://www.bjjheroes.com/bjj-fighters/' + table_heroes[0]['First Name'][i].lower() + '-' + 
         table_heroes[0]['Last Name'][i].lower())
    request = requests.get(url)

if request.status_code == 200:
    my_header = { "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) 
                 Chrome/50.0.2661.75 Safari/537.36", "X-Requested-With": "XMLHttpRequest" }
    html_page_text = requests.get(url,my_header)
    table_heroes.append(pd.read_html(html_page_text.text))

所以我已经提取了每个运动员的名字的列表(称为all_athletes),我正在运行一个循环,这个循环将输入他们的网站并从表格中提取数据,但是有些运动员的页面上没有任何东西,所以当我在列表中运行时,会不断出现错误,我必须手动逐个将他们从运动员身上取出。

在运行代码之前,是否有任何方法检查网站是否有表以避免错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-17 12:59:29

使用尝试/除了。我还修复了代码中的其他一些小东西:

代码语言:javascript
复制
import requests
import pandas as pd

my_header = { "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36", "X-Requested-With": "XMLHttpRequest" }
html_page_text = requests.get('https://www.bjjheroes.com/a-z-bjj-fighters-list',my_header)
all_athletes = pd.read_html(html_page_text.text)[0]

table_heroes = pd.DataFrame()
for idx, row in all_athletes.iterrows():
    url=('https://www.bjjheroes.com/bjj-fighters/' + row['First Name'].lower() + '-' + row['Last Name'].lower())
    request = requests.get(url, my_header)

    try:
        html_page_text = requests.get(url,my_header)
        temp_df = pd.read_html(html_page_text.text)[0]
        temp_df['Athlete'] = row['First Name'] + ' ' + row['Last Name']
        table_heroes = table_heroes.append(temp_df, sort=False)
        print('Collected: %s %s' %(row['First Name'],row['Last Name']))

    except Exception as e:
        print(e)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66242193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档