Запись данных в файл csv, но данные перезаписываются

Попробуйте очистить данные, но данные будут перезаписаны, и они дадут данные только 2 page в файле csv, пожалуйста, порекомендуйте любое решение для этого, я жду вашего ответа. Как я могу это исправить? Есть ли способ предложить мне, я думаю, из-за цикла for они перезаписывают данные. Спасибо. это ссылка на страницу https://www.askgamblers.com/online-casinos/countries/ca/

from selenium import webdriver
import time
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import pandas as pd
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from csv import writer


options = webdriver.ChromeOptions()
options.add_argument("--no-sandbox")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1920x1080")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
wait = WebDriverWait(driver, 20) 
for page in range(1,3):             
    URL = 'https://www.askgamblers.com/online-casinos/countries/ca/{page}'.format(page=page)
    driver.get(URL)
    time.sleep(2)

    urls= []
    data = []
    page_links =driver.find_elements(By.XPATH, "//div[@class='card__desc']//a[starts-with(@href, '/online')]")
    for link in page_links:
        href=link.get_attribute("href")
        urls.append(href)    
       
  
    with open('product.csv', 'w',newline='',encoding='utf-8') as csvfile:
        thewriter=writer(csvfile)
        header=['name','url','website_link','company','rating']
        thewriter.writerow(header)
        
        
        for url in urls:
            driver.get(url)
            time.sleep(1)
            
            try:
                name=driver.find_element(By.CSS_SELECTOR,"h1.review-intro__title").text   
            except:
                pass
            
            try:
                company=driver.find_element(By.XPATH,"//p[span[contains(.,'Company')]]/following-sibling::div").text   
            except:
                pass
            try:
                link=driver.find_element(By.XPATH,"//p[span[contains(.,'Website')]]/following-sibling::div").text   
            except:
                pass
            
            try:
                rate=driver.find_element(By.CSS_SELECTOR,"span.rating-ring__number").text
                
            except:
                pass
            
            jobinfo=[name,url,link,company,rate]
            thewriter.writerow(jobinfo)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы открываете один и тот же файл для (пере)записи с помощью 'w' каждый раз, но зацикливаетесь на 3 страницах. Используйте другое имя или вместо этого используйте 'a' (добавить), но вы также получите заголовок три раза с текущей конфигурацией.

Лучше было бы открыть файл для записи вне цикла for page, написать заголовок, затем внутри for page написать строки.

В основном:

with open('product.csv', 'w',newline='',encoding='utf-8') as csvfile:
    thewriter=writer(csvfile)
    header=['name','url','website_link','company','rating']
    thewriter.writerow(header)

    for page in range(1,3):             
        ... # compute the row info
        jobinfo=[name,url,link,company,rate]
        thewriter.writerow(jobinfo)

Другие вопросы по теме