簡體   English   中英

Python 在 excel 中獲得第二個循環到第二列

[英]Python get second for loop to second column in excel

所以我有一個來自零售網站的 web 抓取腳本,我已經成功地將名稱和價格抓取到 excel 中。 我也想為同一站點上的其他產品創建更多腳本,但遇到了一些麻煩。 基本上在我的其他腳本中,我只需使用 1 個容器即可達到價格。 但是,有了這個,我不得不制作另一個更深的容器,因為我不知道如何跳過 div 和 span 類。 因此,如您所見,我必須制作 2 個 for 循環,我得到了我想要的結果,但是當導出到 excel 時,它只導出第一列中的所有內容。 如果有一種方法可以跳過類,這樣我只能像以前一樣使用 1 for 循環,或者有一種方法來操作數據以便將它移到第二列,那將會有所幫助。

from bs4 import BeautifulSoup as soup 
from urllib.request import urlopen as uReq  
import requests
import os.path

page_url = "https://www.tenniswarehouse-europe.com/catpage-MSNIKE-EN.html"

save_path = 'C:\\Users\\Lefty\\Desktop\\Scrape Excels'


response = requests.get(page_url, cookies={'SMID':'smc_fbIdmC7VmLvxzHBD0pXTqbYo7kSYh69hqcKQ02xE_239306669'})
soup = soup(response.text, 'html.parser')



containers = soup.findAll("div", {"class":"product_wrapper shoe cf"})
containers1 = soup.findAll("div", {"class":"pricing"})


filename = "Nikes Men's Shoes"
completeName = os.path.join(save_path, filename+".csv")
f = open(completeName, 'w')

headers = "Name, Price\n"

f.write(headers)

for container in containers:
    name = container.div.img['alt']
    f.write(name + "," + '\n') 

    
for container1 in containers1:
    price = container1.span.span.text
    f.write(price.replace(",", ".") + '\n')

您可以使用zip function 而不是為每個分離的容器循環。 因此,您只需一個循環來寫入文件,如下所示:

for name_container, price_container in zip(containers, containers1):
    name = name_container.div.img['alt']
    price = price_container.span.span.text.replace(",", ".")

    f.write(name+ "," + price + "\n")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM