Как писать строки по одной в файле Excel с помощью веб-сканирования Python - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу написать файл Excel с данными, которые я получил через веб-сайт (cnn.com).Я написал файл Excel, но он работает не так, как я хочу.

Поскольку я хочу сохранить данные страница за страницей в виде строк.

, поэтому результат яПолучилось, теперь выглядит так - снимок экрана

и идеальный результат выглядит так - screenshot2

Так вот мой код.Спасибо!

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import requests
import time
import pandas as pd
import os
from bs4 import BeautifulSoup as soup
from bs4 import NavigableString
import re

path = "/Users/Downloads/chromedriver.exe"
driver = webdriver.Chrome(path)

# select tag in several pages

a =['world','politics','business','entertainment','sport','health','videos']
nl = []
for i in a:
    driver.get("https://edition.cnn.com/"+str(i))
    driver.implicitly_wait(3)
    html = driver.page_source
    soup = BeautifulSoup(html, "lxml")
    find_ingre = soup.select("div.cd__content")
    for i in find_ingre:
        nl.append(i.get_text())


from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# Append all results as row
ws.append(nl)
wb.save("newstopic.xlsx")

1 Ответ

0 голосов
/ 21 февраля 2019

вместо добавления списка к рабочему листу в конце добавляйте его в каждую итерацию.Попробуйте приведенный ниже код, он будет работать

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import requests
import time
import pandas as pd
import os
from bs4 import BeautifulSoup as soup
from bs4 import NavigableString
import re
import xlsxwriter
from openpyxl import Workbook

path = "/Users/Downloads/chromedriver.exe"
driver = webdriver.Chrome(path)

# select tag in several pages

a =['world','politics','business','entertainment','sport','health','videos']
wb = Workbook()
ws = wb.active
for i in a:
    nl = []
    driver.get("https://edition.cnn.com/"+str(i))
    driver.implicitly_wait(3)
    html = driver.page_source
    soup = BeautifulSoup(html, "lxml")
    find_ingre = soup.select("div.cd__content")
    for i in find_ingre:
        nl.append(i.get_text())
    ws.append(nl)

wb.save("newstopic.xlsx")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...