ОБНОВЛЕНИЕ: код работает только на мгновение.Существует более 2000 крипто, и на данный момент у меня 492 уникальных файла с их историей.
Когда я пытаюсь запустить URL, который пропускается в первую очередь сам по себе, это работает.Поэтому я думаю, что это было сужено, чтобы иметь какое-то отношение к запросу контента.
Можно ли убедиться, что интересующая меня таблица полностью загружена, прежде чем продолжить код?
ОБНОВЛЕНИЕ: Я получил это работает должным образом.Я думаю, что есть ограничение на количество запросов, которые вы можете делать в секунду или минуту на сайте, с которого я пытаюсь вычеркнуть.Я помещаю задержку на 3 секунды между каждым запросом, и СЕЙЧАС ЭТО РАБОТАЕТ !!!!Спасибо вам обоим за помощь.Несмотря на то, что он не дал прямого ответа, он поставил меня на правильный путь, чтобы выяснить это.
from bs4 import BeautifulSoup
import requests
import pandas as pd
import time
def scraping(url):
global line
content = requests.get(url).content
soup = BeautifulSoup(content,'html.parser')
table = soup.find('table', {'class': 'table'})
if not table:
print(url)
return
data = [[td.text.strip() for td in tr.findChildren('td')] for tr in table.findChildren('tr')]
df = pd.DataFrame(data)
df.drop(df.index[0], inplace=True)
df[0] = pd.to_datetime(df[0])
for i in range(1,7):
df[i] = pd.to_numeric(df[i].str.replace(",","").str.replace("-",""))
df.columns = ['Date','Open','High','Low','Close','Volume','Market Cap']
df.set_index('Date',inplace=True)
df.sort_index(inplace=True)
return df.to_csv(line + '_historical_data.csv')
with open("list_of_urls.txt") as file:
for line in file:
time.sleep(3)
line = line.strip()
start = "https://coinmarketcap.com/currencies/"
end = "/historical-data/?start=20000101&end=21000101"
url = start + line + end
scraping(url)