【问题标题】:Pandas(DataFrame): How to write new data in new rowPandas(DataFrame):如何在新行中写入新数据
【发布时间】:2020-07-21 06:53:09
【问题描述】:
import pandas as pd 
import requests
import time
from time import ctime
from bs4 import BeautifulSoup
count=0

while(1):
    page =requests.get("https://www.flipkart.com/apple-iphone-11-black-64-gb/p/itm0f37c2240b217?pid=MOBFKCTSVZAXUHGR&lid=LSTMOBFKCTSVZAXUHGREPBFGI&marketplace=FLIPKART&srno=s_1_1&otracker=AS_QueryStore_OrganicAutoSuggest_4_5_na_na_na&otracker1=AS_QueryStore_OrganicAutoSuggest_4_5_na_na_na&fm=SEARCH&iid=7152a9e3-bb03-43e4-883d-b366d856ad66.MOBFKCTSVZAXUHGR.SEARCH&ppt=sp&ppn=sp&ssid=tn7ys3sre80000001595289428691&qH=f6cdfdaa9f3c23f3")
    soup = BeautifulSoup(page.content, 'html.parser')
    product_name = soup.find(class_='_35KyD6').get_text()
    price = soup.find(class_='_1vC4OE _3qQ9m1').get_text()
    product_details = pd.DataFrame({
        'Name':product_name,
        'Price':price,
        'Time':time.ctime()}, 
        index=[count])
    product_details.to_csv('flipkart_scrapper.csv')
    
    count+=1
    print(count)
time.sleep(1)

当我打印 product_details 时,我得到的价格是每秒递增的索引和时间,但是当我尝试将其写入 CSV 时,只出现一行。

【问题讨论】:

    标签: python python-3.x pandas web-scraping


    【解决方案1】:

    您应该使用以下命令追加到现有文件,而不是在每次迭代时创建一个新的 csv 文件(这会覆盖现有文件):

    product_details.to_csv('flipkart_scrapper.csv', mode='a', header=False)
    

    要获取标头 - 在 while 循环之前,只需将标头存储在输出文件中即可。

    【讨论】:

    • header=False 在做什么?
    • product_name = soup.find(class_='_35KyD6').get_text() AttributeError: 'NoneType' object has no attribute 'get_text' 循环运行 56 次后出现此错误。这是否仅仅意味着它无法访问所述网站可能是因为互联网中断?
    猜你喜欢
    • 2013-07-22
    • 2020-11-08
    • 1970-01-01
    • 2020-06-12
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多