ไม่สามารถสร้างแผ่นงานที่แตกต่างกันในไฟล์ Excel สำหรับลิงก์ที่แตกต่างกันได้

ฉันได้เขียนสคริปต์ด้วยภาษาไพธอนเพื่อแยกวิเคราะห์บทช่วยสอนต่างๆ tiles และ links บางส่วนจากหน้าเว็บ และสุดท้ายก็เขียนบทช่วยสอนเหล่านั้นลงในไฟล์ Excel ฉันเคยใช้ openpyxl สคริปต์ของฉันทำงานได้ดีหากฉันต้องการรับเอกสารทั้งหมดในแผ่นงานเดียว อย่างไรก็ตาม ฉันใช้ลิงก์สามลิงก์ในมีดโกนเพื่อดึงข้อมูลออกมา เป้าหมายของฉันคือการเขียนเอกสารที่คัดลอกมาเหล่านั้นเป็นแผ่นงานที่แตกต่างกันสามแผ่นในไฟล์ Excel ฉันจะบรรลุเป้าหมายนั้นได้อย่างไร? ขอบคุณล่วงหน้า.

นี่คือสิ่งที่ฉันได้เขียนไปแล้ว:

import requests
from urllib.parse import urljoin
from lxml.html import fromstring
from openpyxl import Workbook

wb = Workbook()
wb.active
ws = wb.worksheets[0]

storage ={
'http://www.wiseowl.co.uk/videos/year/2011.htm',
'http://www.wiseowl.co.uk/videos/year/2012.htm',
'http://www.wiseowl.co.uk/videos/year/2013.htm'
}

def get_docs(link):
    response = requests.get(link)
    root = fromstring(response.text)
    for item in root.cssselect(".woVideoListDefaultSeriesTitle"):
        title = item.cssselect("a")[0].text
        title_link = item.cssselect("a")[0].attrib['href']
        print(title,title_link)
        ws.append([title,title_link])
        wb.save("tuts.xlsx")

if __name__ == '__main__':
    for tut_link in storage:
        get_docs(tut_link)

เป็นอีกครั้งที่สคริปต์ของฉันสามารถขูดเอกสารและเขียนเอกสารเหล่านั้นลงในแผ่นงานเดียวในไฟล์ Excel แต่ฉันต้องการให้เอกสารที่เขียนเป็นแผ่นงานที่แตกต่างกันสามแผ่น (แต่ละแผ่นสำหรับแต่ละลิงก์) ในไฟล์ Excel


person SIM    schedule 13.01.2018    source แหล่งที่มา
comment
ทำอะไรก็ไม่รู้?   -  person Charlie Clark    schedule 14.01.2018
comment
ดังนั้นคุณไม่มีอะไรจะดีไปกว่านี้แล้วโดยไม่ต้องพูดจาน่ารำคาญ @Charlie Clark อย่างไรก็ตาม ปัญหาได้รับการแก้ไขแล้ว   -  person SIM    schedule 14.01.2018
comment
โปรดทบทวนกฎเกณฑ์ในการถามคำถาม   -  person Charlie Clark    schedule 15.01.2018
comment
ฉันผิดตรงไหน?   -  person SIM    schedule 15.01.2018
comment
openpyxl.readthedocs.io/en/latest/usage.html# write-a-workbook แสดงวิธีสร้างแผ่นงาน คำถามของคุณควรเริ่มต้นที่นั่น   -  person Charlie Clark    schedule 15.01.2018
comment
หากฉันไม่สามารถให้ความชัดเจนเกี่ยวกับคำถามของฉันได้ ฉันจะได้คำตอบที่ฉันต้องการได้อย่างไร กลับกลายเป็นว่าคุณแสดงความคิดเห็นที่รุนแรงตั้งแต่แรกและยังได้รับการตอบกลับที่รุนแรงอีกด้วย ซึ่งเป็นสาเหตุที่ทำให้คุณรับไม่ได้ ให้เราละเลยพฤติกรรมเด็ก ๆ นี้ ขอบคุณนะ   -  person SIM    schedule 15.01.2018


คำตอบ (1)


โค้ดด้านล่างส่งคืนชีตที่มีลักษณะดังนี้: ~ภาพหน้าจอของ Excel

ก่อนที่คุณจะวนซ้ำ เราจะสร้างชีตใหม่เพื่อใส่ผลลัพธ์ จากนั้นเราจะวนซ้ำบันทึกผลลัพธ์ลงในชีตนั้น

รหัส:

import requests
from urllib.parse import urljoin
from lxml.html import fromstring
from openpyxl import Workbook

wb = Workbook()
wb.active

storage ={
'http://www.wiseowl.co.uk/videos/year/2011.htm',
'http://www.wiseowl.co.uk/videos/year/2012.htm',
'http://www.wiseowl.co.uk/videos/year/2013.htm'
}

def get_docs(link):
    response = requests.get(link)
    root = fromstring(response.text)
    # Create a worksheet with the title of the year.
    ws = wb.create_sheet(link[37:-4])
    for item in root.cssselect(".woVideoListDefaultSeriesTitle"):
        title = item.cssselect("a")[0].text
        title_link = item.cssselect("a")[0].attrib['href']
        print(title,title_link)
        ws.append([title,title_link])

if __name__ == '__main__':
    for tut_link in storage:
        get_docs(tut_link)
    sheet=wb.get_sheet_by_name('Sheet')
    wb.remove_sheet(sheet)
    wb.save("tuts.xlsx")
person Spence Wetjen    schedule 13.01.2018
comment
คุณสุดยอดมาก @Spence Wetjen!!!! วิธีแก้ปัญหาของคุณคือสิ่งที่ฉันคาดหวัง เพียงสิ่งเดียว: เป็นไปได้ไหมที่จะเตะแผ่นงานเปล่านั้นออกจากสมุดงาน ขอบคุณล้านล้าน - person SIM; 13.01.2018
comment
@ novice-coder แน่นอน อัปเดตโซลูชันเพื่อสะท้อนสิ่งนี้ - person Spence Wetjen; 13.01.2018
comment
ขอบคุณเป็นล้าน ฉันหวังว่าฉันจะสามารถโหวตโซลูชันของคุณได้นับพันครั้ง ขอบคุณอีกครั้ง. - person SIM; 13.01.2018