2017-09-07 1 views
0

j'ai écrit un code qui racler les sites: https://www.newegg.com/Product/ProductList.aspx?Submit=ENE&N=-1&IsNodeId=1&Description=GTX&bop=And&Page= {} & PageSize = 36 & order = Bestmatch » .format (page)Impossible d'obtenir des données en format correct après grattage web en python

mais quand je exécuter ce code, les données ne sont pas formtted, comme le nom du produit est à venir dans jamais cellule et ainsi sur le prix et l'image.

from urllib.request import urlopen 
from bs4 import BeautifulSoup 
f = open("Scrapedetails.csv", "w") 
Headers = "Item_Name, Price, Image\n" 
f.write(Headers) 

for page in range(1,15): 
    page_url = "https://www.newegg.com/Product/ProductList.aspx? 
Submit=ENE&N=-1&IsNodeId=1&Description=GTX&bop=And&Page= 
{}&PageSize=36&order=BESTMATCH".format(page) 
    html = urlopen(page_url) 
    bs0bj = BeautifulSoup(html, "html.parser") 
    page_details = bs0bj.find_all("div", {"class":"item-container"}) 
    for i in page_details: 
     Item_Name = i.find("a", {"class":"item-title"}) 
     Price = i.find("li", {"class":"price-current"}) 
     Image = i.find("img") 
     Name_item = Item_Name.get_text() 
     Prin = Price.get_text() 
     imgf = Image["src"]# to get the key src 
     f.write("{}".format(Name_item).strip()+ ",{}".format(Prin).strip()+ 
    ",{}".format(imgf)+ "\n") 
f.close() 

quelqu'un peut me aider à ammend codes afin que je puisse obtenir le nom dans la colonne de nom, prix en colonne de prix et l'image dans la colonne image quels sont les nouveaux façons d'enregistrer des données dans csv, quelqu'un peut-il m'aider avec des codes aussi?

Répondre

0

D'accord, je l'ai résolu.

from urllib.request import urlopen 
from bs4 import BeautifulSoup 

f = open("Scrapedetails.csv", "w") 
Headers = "Item_Name, Price, Image\n" 
f.write(Headers) 

for page in range(1,15): 
    page_url = "https://www.newegg.com/Product/ProductList.aspx? 
Submit=ENE&N=-1&IsNodeId=1&Description=GTX&bop=And&Page= 
{}&PageSize=36&order=BESTMATCH".format(page) 
    html = urlopen(page_url) 
    bs0bj = BeautifulSoup(html, "html.parser") 
    page_details = bs0bj.find_all("div", {"class":"item-container"}) 
    for i in page_details: 
     Item_Name = i.find("a", {"class":"item-title"}) 
     Price = i.find("li", {"class":"price-current"}).find('strong') 
     Image = i.find("img") 
     Name_item = Item_Name.get_text().strip() 
     prin = Price.get_text() 
     imgf = Image["src"]# to get the key src 


     print(Name_item) 
     print(prin) 
     print('https:{}'.format(imgf)) 
     f.write("{}".format(Name_item).replace(",", "|")+ ",{}".format(prin)+ ",https:{}".format(imgf)+ "\n") 
f.close() 

Ce sont les codes pour tous ceux qui souhaitent commencer par un web scraping façon la plus simple