Почему в Google Colab не реализована эта строка кода? - PullRequest
0 голосов
/ 04 августа 2020

У меня есть следующий код для проверки статуса ссылок. Если статус ссылки в порядке, то соответствующий ему Status будет обновлен на 1 и напечатан ok. Я запускаю этот код в Google Colab здесь .

import pandas as pd
from multiprocessing import Pool
import requests
session = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}

# Define a dictionary containing links 
data = {'Link': ['https://www.collinsdictionary.com/dictionary/french-english/aimer',
                 'https://www.collinsdictionary.com/dictionary/english-french/graduate',
                 'https://www.collinsdictionary.com/dictionary/english-french/apple',
                 'https://www.collinsdictionary.com/dictionary/english-french/apricot'], 
                'Status': [0, 0, 0, 0]} 

# Generate datafrane df
df = pd.DataFrame(data, columns = ['Link', 'Status']) 

#Generate function to check status of a link
def check_status(i):
    r = session.get(df.at[i, 'Link'], headers = headers)
    if r.status_code == 200:
        df.at[i, 'Status'] = 1
        return 'ok'
    else:
        return 'not ok'

pool = Pool(5)
result = pool.map_async(check_status, list(df[df['Status'] == 0].index)[0:4])
pool.close()

print(result.get())  
print(df) 

 

Результат:

['ok', 'ok', 'ok', 'ok']
                                                Link  Status
0  https://www.collinsdictionary.com/dictionary/f...       0
1  https://www.collinsdictionary.com/dictionary/e...       0
2  https://www.collinsdictionary.com/dictionary/e...       0
3  https://www.collinsdictionary.com/dictionary/e...       0

Очевидно, я включаю строки

if r.status_code == 200:
    df.at[i, 'Status'] = 1 

Не могли бы вы объяснить, почему результат ok, но столбец Status равен 0 для всех строк?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...