简体   繁体   中英

Looping through multiple pages using BeautifulSoup

I'm quite new to web scraping using BeautifuSoup and I'm attempting to loop through multiple pages and write everything into a CSV file.

Here my current code:

from bs4 import BeautifulSoup as soup
from urllib.request import urlopen 



urls = []
url = "https://www.newegg.com/Black-Friday-Deals/EventSaleStore/ID-10475/"
for page in range (1,7):

  pageurl = 'Page-{1}'.format(url,page)
  urls.append(pageurl)

  page = urlopen(url)
  html = page.read().decode("utf-8")
  page.close()


  page_soup = soup(html, "html.parser")

  containers = page_soup.findAll("div",{"class" : "item-container"})
  print(len(containers))

  filename = "BlackFridayNewegg.csv"
  f = open(filename, "w")

  headers = "Product, Previous price, Current price"

  f.write(headers)
  for container in containers:
    
    
    rating_container = page_soup.findAll("span", {"class" : "item-rating-num"})
    rating = rating_container[0].text.strip()

    title_container = container.findAll("a",{"class":"item-title"})
    title = title_container[0].text.strip()

    prev_price_container = container.findAll("li",{"class" : "price-was"})
    prev_price = prev_price_container[0].text

    current_price_container = container.findAll("li", {"class" : "price-current"})
    current_price = current_price_container[0].text 

    print("Product Name: " +title)
    print("Previous Price: " + prev_price)
    print("Current Price: "+current_price) 
    result = title.replace(",","")+ "," + prev_price +"," +current_price +"\n"
    f.write(result)
    
  f.close()

My code is working properly and will display text from multiple pages, but it won't write it all into the file. Any reason as to why this is happening?

f = open(filename, "w") clears the file. You need f = open(filename, "a")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM