抱歉打扰各位了。我正在 python 中进行网络抓取,我想使用 API 将价格从网站(英镑)转换为捷克克朗,但价格显示了不同的结果,它看起来像是将英镑转换为英镑,有谁知道我的问题出在哪里代码?
#importovani knihoven
from bs4 import BeautifulSoup
import requests
import csv
import pandas as pd
#funkce pro ziskani aktualnich kurzu men z API
def get_exchange_rates():
response = requests.get("https://api.exchangerate-api.com/v4/latest/CZK")
data = response.json()
return data['rates']
#funkce pro prevod z GBP na CZK
def convert_to_czk(price_gbp, exchange_rate):
price_czk = price_gbp * exchange_rate
return round(price_czk, 2)
#aktualni kurz GBP vuci CZK
exchange_rates = get_exchange_rates()
exchange_rate_gbp = exchange_rates['GBP']
books_data = [] #slouzi pro ukladani informaci o knihach
#Projde veskere stranky u kazde knihy, nebot na jedne strance se nachazi pouze 20 zaznamu
for page_num in range(1, 51):
page_url = f'https://books.toscrape.com/catalogue/page-{page_num}.html'
response = requests.get(page_url)
soup = BeautifulSoup(response.content, 'html.parser')
books = soup.find_all('h3')
for book in books:
book_href = book.find('a')['href']
book_url = f"https://books.toscrape.com/catalogue/{book_href}"
book_response = requests.get(book_url)
book_soup = BeautifulSoup(book_response.content, 'html.parser')
title = book_soup.find('h1').text
category = book_soup.find('ul', class_='breadcrumb').find_all('a')[2].text.strip()
rating = book_soup.find('p', class_='star-rating')['class'][1]
price_gbp = float(book_soup.find('p', class_='price_color').text.strip().replace('£', ''))
price_czk = convert_to_czk(price_gbp, exchange_rate_gbp)
availability = book_soup.find_all('p', class_=['instock', 'availibility'])[0].text.strip()
#Zíkání prvních 8 znaků textu dostupnosti
availability_in_out = availability.strip()[:8]
# Získání 11. až 12. znaku textu dostupnosti
availability_sum = availability[10:12]
data = [title, category, rating, price_czk, availability_in_out, availability_sum]
books_data.append(data)
# Prevod list od lists do df
df = pd.DataFrame(books_data, columns=['Title', 'Category', 'Rating', 'Price_CZK', 'Availability', 'Available Quantity'])
#kategorii ze zadani SKODA
desired_categories = ["Travel", "Mystery", "Historical Fiction", "Sequential Art", "Classics"]
#filtrovani dataframu na zaklade kategorii ze zadani od SKODA
filtered_df = df[df['Category'].isin(desired_categories)]
#ulozeni dataframu do CSV souboru
filtered_df.to_csv('books_scrapinggg.csv', index=False)
print("The CSV file books_scraping.csv was successfully created.")```
问题出在货币兑换上。 1 英镑 = 29.49 捷克克朗,而您的做法不正确。
尝试下面的代码片段。
#funkce pro ziskani aktualnich kurzu men z API
def get_exchange_rates():
response = requests.get("https://api.exchangerate-api.com/v4/latest/gBP")
data = response.json()
return data['rates']
#funkce pro prevod z GBP na CZK
def convert_to_czk(price_gbp, exchange_rate):
price_czk = price_gbp * exchange_rate
return round(price_czk, 2)
#aktualni kurz GBP vuci CZK
exchange_rates = get_exchange_rates()
exchange_rate_gbp = exchange_rates['CZK']