Я не могу спарсить с этого сайта. Это потому, что данные динамические?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я не могу спарсить с этого сайта. Это потому, что данные динамические?

Сообщение Anonymous »

Я пытаюсь получить данные из таблицы https://newtin.co811.org/responsedispla ... B420800874. На этом веб-сайте есть разная информация для каждого билета. Я не знаю, тот ли это веб-сайт или нет. Я неправильно использую красивый суп с кодом. Я новичок в программировании, поэтому не знаю многих настроек аргументов.
Это то, что я пытаюсь сделать. Я получаю файл Excel с кучей номеров билетов. Мне нужно скопировать и вставить номер билета на этот сайт для каждого чертового билета, чтобы получить информацию о билете. Это занимает часы. Я пытаюсь создать приложение, в котором я загружаю электронную таблицу Excel, оно открывает веб-сайт с номером билета, извлекает данные и отправляет их в электронную таблицу, чтобы я мог быстро просмотреть всю информацию. Я могу заставить программу извлекать только строки заявок и ответов, но не данные под ними.
import requests
from bs4 import BeautifulSoup
import pandas as pd
import tkinter as tk
from tkinter import filedialog, messagebox
import os

# Define function to extract data from website
def get_ticket_data(ticket_number):
# Remove the last 4 characters from the ticket number
ticket_without_last_4 = ticket_number[:-4]

# Build URL
url = f"https://newtin.co811.org/responsedispla ... out_last_4}"

# Send HTTP request to get the webpage content
response = requests.get(url)

if response.status_code == 200:
# Parse the page content
soup = BeautifulSoup(response.content, 'html.parser')

# Extract specific data from the page using CSS selectors
# Update these selectors according to the webpage structure
div1_data = soup.select_one("div.some-class-for-div1").text.strip() if soup.select_one("div.some-class-for-div1") else "N/A"
div3_data = soup.select_one("div.some-class-for-div3").text.strip() if soup.select_one("div.some-class-for-div3") else "N/A"

return {"Div1": div1_data, "Div3": div3_data}
else:
return {"Div1": "Error", "Div3": "Error"}

# Function to handle spreadsheet display and writing
def process_excel_file(input_data, output_filename):
# Create a list to store scraped data
data_list = []

# Iterate through each row of input data
for index, row in input_data.iterrows():
ticket = row['Ticket']
# Get data from website for each ticket
web_data = get_ticket_data(ticket)

# Append combined row and web data to the list
data_list.append({
"Ticket": ticket,
"Account": row['Account'],
"Completed": row['Completed'],
"Work Date": row['Work Date'],
"Type": row['Type'],
"Category": row['Category'],
"Priority": row['Priority'],
"Company Name": row['Company Name'],
"Web Div1": web_data['Div1'],
"Web Div3": web_data['Div3']
})

# Convert the collected data into a DataFrame for easy manipulation
output_df = pd.DataFrame(data_list)

# Display the DataFrame in the console
print(output_df)

# Show the dataframe in the UI (optional for a basic UI)
# For now, we'll display the first 5 rows
messagebox.showinfo("Data Preview", f"First 5 rows:\n{output_df.head().to_string(index=False)}")

# Save the file using the filename chosen by the user
output_df.to_excel(output_filename, index=False)
messagebox.showinfo("Save Complete", f"File saved as {output_filename}")

# Load your existing Excel file using file dialog
def load_file():
# Open a file dialog to choose an Excel file
file_path = filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx")])

if file_path:
try:
# Load the selected Excel file
input_df = pd.read_excel(file_path)

# Ask for save location and file name
output_file = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel files", "*.xlsx")])

if output_file:
# Process and display the data
process_excel_file(input_df, output_file)
else:
messagebox.showerror("Save Error", "Please specify a valid file name to save.")
except Exception as e:
messagebox.showerror("File Error", f"Failed to load file.\nError: {e}")
else:
messagebox.showwarning("No File", "No file selected.")

# Basic UI setup
def main():
# Create the main window
root = tk.Tk()
root.title("Ticket Data Scraper")

# Window size
root.geometry("300x150")

# Add a button to load an Excel file
load_button = tk.Button(root, text="Load Excel File", command=load_file)
load_button.pack(pady=20)

# Run the UI loop
root.mainloop()

if __name__ == "__main__":
main()


Подробнее здесь: https://stackoverflow.com/questions/789 ... is-dynamic
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»