Openpyxl 没有将 BeautifulSoup 的多行输出写入单元格

Openpyxl not writing a multiline output from BeautifulSoup to cell

我在使用 openpyxl 和从 BeautifulSoup 写入多行输出时遇到问题。

当我 print (parsed_links) 来自 BeautifulSoup 的输出时,它看起来像这样:

Link1
Link2
Link3
Link4

当我使用 openpyxl 将打印良好的相同数据写入单元格时, 我只得到单元格中输入的最后一行。

Link4

我正在使用此代码:

current_db.cell(row=2, column=4).value = (parsed_links)

关于如何将整个 BeautifulSoup 输出 Link1、Link2、Link3、Link4 写入一个单元格或每个单元格的任何建议?我知道使用 csv 我可以使用 writerow 但我想在 openpyxl 中这样做以避免更多的依赖。

`#4CHAN THREADS LOG

from selenium import webdriver
import time
import datetime
import openpyxl
from openpyxl.styles import Alignment
import os
from bs4 import BeautifulSoup
import lxml


#XLSX DATABASE MAP

main_db = openpyxl.load_workbook('C:/chanlog/db.xlsx')
current_db = main_db["current"]


#URL MAP

go_to_page = 'https://thebarchive.com/b/page/7'


#START CHROME

browser = webdriver.Chrome("C:\chromedriver.exe")


#GO TO 4CHAN NAVI PAGE LOAD ALL THREADS INTO XLSX
time.sleep(2)
browser.get(go_to_page)
time.sleep(4)


#PARSE THREAD URLS FROM PAGES
pages_soup = BeautifulSoup(browser.page_source, 'lxml')
for mobile_view in pages_soup.find_all(class_='mobile_view'):
    for thread_links in mobile_view.find_all('a'):
        parsed_thread_links = (thread_links.get('href'))
        links = str(parsed_thread_links)
        for row, text in enumerate(links.split('\n'), start=2):
                current_db.cell(row=row, column=4).value = text
                main_db.save('C:/chanlog/db.xlsx')
                print(parsed_thread_links)`

以下应该有助于您前进:

import requests
import openpyxl     
from bs4 import BeautifulSoup

wb = openpyxl.Workbook()
ws = wb.active

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.get('https://thebarchive.com/b/page/7', headers=headers)
pages_soup = BeautifulSoup(r.text, 'lxml')
row = 2

for mobile_view in pages_soup.find_all(class_='mobile_view'):
    for thread_link in mobile_view.find_all('a', href=True):
        ws.cell(row=row, column=4).value = thread_link['href']
        row += 1

wb.save('db.xlsx')

对于找到的每个 HREF,只需增加行号。请注意,获取此信息不需要 chromedriver,如果可以避免使用它应该会快很多。