今天早些时候,在用户的帮助下,我可以进行这项高尚的webscraping项目工作。但是最终的CSV仅在一列中包含所有信息(附有照片)。 我如何将每个类放在相应行的一个特定列中?
提前谢谢大家。
代码:
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")
答案 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