使用Pandas进行网络抓取的CSV输出问题

时间:2020-05-24 18:23:55

标签: python pandas selenium csv dataframe

今天早些时候,在用户的帮助下,我可以进行这项高尚的webscraping项目工作。但是最终的CSV仅在一列中包含所有信息(附有照片)。 我如何将每个类放在相应行的一个特定列中?

提前谢谢大家。

Print of the final result

代码:

from bs4 import BeautifulSoup
import pandas as pd
from selenium import webdriver
import pandas as pd

products=[] #List to store name of the product
prices=[] #List to store price of the product
ratings=[] #List to store rating of the product
driver = webdriver.Chrome(executable_path = r'C:\Users\gomes\Desktop\chromedriver.exe')
driver.get("https://www.flipkart.com/laptops/~buyback-guarantee-on-laptops-/pr?sid=6bo%2Cb5g&uniq")
content = driver.page_source
soup = BeautifulSoup(content, 'html.parser')
for a in soup.findAll('a',href=True, attrs={'class':'_31qSD5'}):
    name=a.find('div', attrs={'class':'_3wU53n'})
    price=a.find('div', attrs={'class':'_1vC4OE _2rQ-NK'})
    rating=a.find('div', attrs={'class':'hGSR34'})
    products.append(name.text)
    prices.append(price.text)
    ratings.append(rating.text)
    data = dict({'Product Name': products,
                 'Price': prices,
                 'Rating': ratings
                 })
    # create dataframe
    products_df = pd.DataFrame(
        dict([(k, pd.Series(v)) for k, v in data.items()])
        )
    products_df.to_csv("C:\\Users\\gomes\\Desktop\\preços.csv")

2 个答案:

答案 0 :(得分:2)

我仅在不同的列中获取信息,您的代码没有错误。问题出在excel中。

转到“数据”,然后选择列,然后在数据工具中,单击“文本到列”,然后单击“定界”,并使用逗号作为定界符

答案 1 :(得分:1)

如果您仍然想在Excel中使用数据,则pandas也具有 .on_key("enter", => # is what it sounds like @true_enter=true @defer => # setTimeout if @true_enter #submit ... .on("keyup input", => @true_enter=false ) 方法。您可能需要使用dataframe.to_excel()安装excel编写器,然后直接导出到excel并完全跳过csv。

pip install openpyxl