検索

ホームページ  >  に質問  >  本文

HTML ページから URL を含む CSV ファイルをアップロードし、Flask を使用してクロールする URL を読み取ります。

現在、URL のリストを含む CSV ファイルをアップロードできる Web ベースのシステムを作成する必要があります。アップロード後、システムは URL を 1 行ずつ読み取り、クロールの次のステップに使用します。ここで、クロールするには、クロールする前に Web サイトにログインする必要があります。ログイン Web サイトのソース コードはすでにあります。ただし、問題は、「upload_page.html」という名前の HTML ページを「upload_csv.py」という名前の flask ファイルに接続したいことです。ログインとスクレイピングのソース コードは flask ファイルのどこに配置する必要がありますか?

upload_page.html

リーリー

upload_csv.py

リーリー

私のログイン コードとクロール コードは正しい場所にありますか?ただし、エンコードが機能せず、アップロード ボタンをクリックしても処理されません

P粉799885311P粉799885311472日前577

全員に返信(1)返信します

  • P粉207969787

    P粉2079697872023-09-08 00:06:27

    csv_file = request.files['file']
    # Load the CSV data into a DataFrame
    df = pd.read_csv(csv_file)
    final_data = []
    # Initialize the web driver
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--disable-gpu")
    driver = webdriver.Chrome(options=chrome_options)
    # Loop over the rows in the DataFrame and scrape each link
    for index, row in df.iterrows():
        link = row['Link']
        # Login to the website
        # Replace this with your own login code
        driver.get("https://example.com/login")
        username_field = driver.find_element_by_name("username")
        password_field = driver.find_element_by_name("password")
        username_field.send_keys("myusername")
        password_field.send_keys("mypassword")
        password_field.send_keys(Keys.RETURN)
        # Wait for the login to complete
        WebDriverWait(driver, 10).until(EC.url_changes("https://example.com/login"))
        # Scrape the website
        driver.get(link)
        start = time.time()
        # will be used in the while loop
        initialScroll = 0
        finalScroll = 1000
    
        while True:
            driver.execute_script(f"window.scrollTo({initialScroll},{finalScroll})")
            # this command scrolls the window starting from the pixel value stored in the initialScroll
            # variable to the pixel value stored at the finalScroll variable
            initialScroll = finalScroll
            finalScroll += 1000
    
            # we will stop the script for 3 seconds so that the data can load
            time.sleep(2)
            end = time.time()
            # We will scroll for 20 seconds.
            if round(end - start) > 20:
                break

    返事
    0
  • キャンセル返事