Python 用于webscraping的Dataframe无效语法

Python 用于webscraping的Dataframe无效语法,python,pandas,dataframe,beautifulsoup,Python,Pandas,Dataframe,Beautifulsoup,我是python新手,我正在尝试实现一个web抓取项目。我当时正在学习一个教程,但在将数据传递到csv工作表的过程中遇到了问题。我已经尝试移动一些括号和其他结构,但似乎没有任何帮助。 见所附代码 谢谢你的帮助,我已经被困了几个小时了 obs:命令“Dataframe”没有改变颜色,我不知道这是否有什么区别,但值得一提的是 以这种方式使用库。 必须先导入熊猫才能删除 import pandas as pd Python对象区分大小写: 使用pd.DataFrame而不是pd.DataFrame您

我是python新手,我正在尝试实现一个web抓取项目。我当时正在学习一个教程,但在将数据传递到csv工作表的过程中遇到了问题。我已经尝试移动一些括号和其他结构,但似乎没有任何帮助。 见所附代码 谢谢你的帮助,我已经被困了几个小时了

obs:命令“Dataframe”没有改变颜色,我不知道这是否有什么区别,但值得一提的是


以这种方式使用库。 必须先
导入熊猫
才能删除

import pandas as pd

Python对象区分大小写:


使用
pd.DataFrame
而不是
pd.DataFrame

您的代码中有几个缺陷,从没有以正确的格式导入库到最重要的是for循环。根据您的代码,这些项被添加到for循环之外的列表中,这可能不适用于所有项。第二个问题是,在以字典格式保存数据后,您不能简单地使用相同的格式创建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\directory\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('products.csv', sep=",")
结果

,产品名称,价格,0级,苹果MacBook Air Core i5第5代-(8) GB/128 GB SSD/Mac OS)MQD32HN/A A1466,“₹65990“,4.71,联想 Ideapad Core i5第七代-(8 GB/1 TB硬盘/Windows 10 Home/2 GB 图形)IP 320-15IKB笔记本电脑,“₹51990“,4.3 2,HP 15核i3第6代- (4 GB/1 TB HDD/Windows 10 Home)15-be014TU笔记本电脑,“₹36,163",4.1 3、联想Core i5第7代-(8 GB/2 TB硬盘/Windows 10 Home/4 GB 图形)IP 520笔记本电脑,“₹79500“,4.4 4,联想核心i5第7代-(8 GB/1 TB HDD/DOS/2 GB图形)IP 320-15IKB笔记本电脑₹56990“,4.3


哪里定义了
pd
?您可能丢失了导入熊猫作为pd它不是
pd.Dataframe
,它是
pd.Dataframe
已经删除了“导入熊猫”,改为“Dataframe”,不幸的是什么也没有发生。非常感谢您的友好解释。mnm解决它。只是一个简单的问题,你知道我在哪里可以找到生成的csv文件吗?没问题。将最后一行代码更改为类似于,
products\u df.to\u csv(“../../data/jobs\u df.csv”,sep=',')
,其中在第一个参数中指定保存数据文件的路径。希望对你有帮助。
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\directory\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('products.csv', sep=",")