Python 用于webscraping的Dataframe无效语法
我是python新手,我正在尝试实现一个web抓取项目。我当时正在学习一个教程,但在将数据传递到csv工作表的过程中遇到了问题。我已经尝试移动一些括号和其他结构,但似乎没有任何帮助。 见所附代码 谢谢你的帮助,我已经被困了几个小时了 obs:命令“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您
以这种方式使用库。 必须先
导入熊猫
才能删除
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=",")