Python 3.6: csvwriter записывает только две первые строки - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь записать названия и коэффициенты футбольной команды с веб-страницы в файл CSV. Моя проблема в том, что он записывает только первые две строки в csv-файл. Кто-нибудь может увидеть, что я делаю не так?

Когда я печатаю его, он работает отлично, как видно на картинке , но когда я распаковываю его в файл csv, он пуст

from selenium import webdriver
from bs4 import BeautifulSoup
import csv

url = "https://1xbet.cm/en/live/Football/"

driver = webdriver.Chrome("C:/Users/Christian/Desktop/WebScraper 0.5/chromedriver/chromedriver.exe")
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')

containers = soup.findAll("div", {"class": "c-events__item_col"})
for container in containers:
    teams = [x.get_text() for x in container.findAll(
        "span", {"class": "c-events__team"}
    )]
    odds = [x.attrs.get('data-coef') for x in container.findAll(
        "a", {"class": "c-bets__bet"}
    )]

    #print(teams)
    #print(odds)
    #print()

# name of csv file
filename = "C:/Users/Christian/Desktop/WebScraper 0.5/1xbetLiveOdds.csv"

# writing to csv file
with open(filename, 'w') as csvfile:
    # creating a csv writer object
    csvwriter = csv.writer(csvfile)

    # writing the fields
    csvwriter.writerow(teams)
    csvwriter.writerow(odds)

1 Ответ

0 голосов
/ 29 апреля 2018

Кажется, вы хотите что-то вроде этого:

from selenium import webdriver
from bs4 import BeautifulSoup
import csv

url = "https://1xbet.cm/en/live/Football/"

driver = webdriver.Chrome("C:/Users/Christian/Desktop/WebScraper 0.5/chromedriver/chromedriver.exe")
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')

containers = soup.findAll("div", {"class": "c-events__item_col"})
teams_odds = []
for container in containers:
    teams_odds.append([x.get_text() for x in container.findAll(
        "span", {"class": "c-events__team"}
    )])
    teams_odds.append([x.attrs.get('data-coef') for x in container.findAll(
        "a", {"class": "c-bets__bet"}
    )])


# name of csv file
filename = "C:/Users/Christian/Desktop/WebScraper 0.5/1xbetLiveOdds.csv"

# writing to csv file
with open(filename, 'w') as csvfile:
    # creating a csv writer object
    csvwriter = csv.writer(csvfile)

    # writing the fields
    for toe in teams_odds:
        csvwriter.writerow(toe)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...