常规文件读写和爬虫数据存储

常规文件读写和爬虫数据存储

1.文件读取、写入数据

  • 文件读取

    • 文件读取很简单,就三步

    • 首先,使用open()函数打开文件
      myfile = open(r'test.txt','r')
      

      myfile是变量,存放读取的文件,第一个r是固定符号,'test.txt'是需要读取文件的文件名,最后一个‘r’是文件打开模式,‘r’代表read, 意为文件读取。

    • 第二步,我们要来读取文件中的内容

      myfliecontent=myfile.read()
      #使用read()函数,读取myfile变量中文件的数据,将数据放在myfilecontent变量中
      print(myfilecontent)
      #使用print()函数,看看读取到什么内容
      
    • 最后一步,关闭文件。

      myfile.close()
      #关闭文件.不能忘记很重要!很重要!很重要!很重要!很重要!
      
    • 完整的代码

      myfile = open(r'test.txt','r')
      myfilecontent = myfile.read()
      print(myfilecontent)
      myfile.close()
      
  • 文件写入操作

    文件写入也是分三步: 打开文件-----写文件------关闭文件

    • 方法一
    第一步打开文件:
    myfile=open(r'test.txt','w') #使用open()函数, 除了最后一个参数,其余参数不动, 把最后一个参数换成‘w’,是write意思,意为写入。
    第二步,开始写入内容
    myfile.write('从你的全世界路过')
    第三步,关闭文件
    myfile.close()
    
    • 方法二

      with open(rtest.txt','a') as myfile:
                myfile.write('从你的全世界路过')
      

2.Excel文件读取存储

  • import openpyxl
    # 引用openpyxl
    wb = openpyxl.Workbook()
    # 利用openpyxl.Workbook()函数创建新的workbook(工作薄)对象,就是创建新的空的Excel文件。
    sheet = wb.active
    # wb.active就是获取这个工作薄的活动表,通常就是第一个工作簿,也就是我们在上面的图片中看到的sheet1。
    sheet.title = 'kaikeba'
    # 可以用.title给工作表重命名。现在第一个工作表的名称就会由原来默认的“sheet1”改为"gdp"。
    sheet['A1'] = 'gdp'
    # 向单个单元格写入数据
    score1 = ['math', 95]
    sheet.append(score1)
    # 写入整行的数据,变量类型是一个列表
    wb.save('score.xlsx')
    # 保存修改的Excel
    wb.close()
    # 关闭Excel
    
    • #实战练习:
      '''
      根据已给网址爬取果壳前10页标题和对应的网址信息,
      并将爬取的数据写入到excel表格或者csv中
      网址:https://www.guokr.com/ask/highlight/?page=
      '''
      import requests
      import openpyxl
      from bs4 import BeautifulSoup
      headers={
      'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
      }
      wb=openpyxl.Workbook()
      sheet=wb.active
      sheet.title='guoke'
      sheet['A1']='标题'
      sheet['B1']='网址'
      for i in range(1,11):
          res=requests.get('https://www.guokr.com/ask/highlight/?page=%s'%i,headers=headers)
          soup=BeautifulSoup(res.text,'html.parser')
          list_info=soup.find_all('ul',class_="ask-list-cp")
          list_data=list_info[0].find_all('div',class_="ask-list-detials")
          #print(list_info)
          for data in list_data:
              res_data=data.find('a')
              title=res_data.text
              #print(title)
              url=res_data['href']
              #print(url)
              sheet.append([title,url])
      wb.save('gouke.xlsx')
      wb.close()
      

3.csv格式文件读取、存储数据

  • CSV存储(写入)数据(csv.writerow()操作)

    方法一:
    import CSV
    # 需要写入的数据
    score1 = ['math', 95]
    score2 = ['english', 90]
    
    # 打开文件,追加a, newline="",可以删掉行与行之间的空格
    file=open("score.csv",'a',newline="")
    # 设定写入模式
    csv_write=csv.writer(flie)
    # 写入具体内容
    csv_write.writerow(score1)
    csv_write.writerow(score2)
    flie.close()
    open("score.csv")
    #方法二:
    import CSV
    score1 = ['math', 95]
    score2 = ['english', 90]
    with open('score.csv','a',newline='') as r:
        #writer是实例化对象,writerow()是写入的方法,括号内的数据是列表形式
        writer=csv.write(r)
        writer.writerow(scroe1)   
        write.writerow(scroe2)
    print('写入完毕')
    open('score.csv')
    
  • CSV数据读取(csv.reader()读取操作)

    • with open("mytest.csv",'r') as file:
          reader=csv.reader(file)
          for content in reader: #writerow()方法写入的数据据是列表形式,所以读取的时候应该for循环遍历列表
              print(content)
      
posted @ 2020-07-21 21:53  Miss诗和远方的高山  阅读(257)  评论(0编辑  收藏  举报