整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          這個網絡爬蟲代碼,拿到數據之后如何存到csv文件中去

          這個網絡爬蟲代碼,拿到數據之后如何存到csv文件中去?

          家好,我是皮皮。

          一、前言

          還是昨天的那個網絡爬蟲問題,大佬們,幫忙看看這個網絡爬蟲代碼怎么修改?那個粉絲說自己不熟悉pandas,用pandas做的爬蟲,雖然簡潔,但是自己不習慣,想要在他自己的代碼基礎上進行修改,獲取數據的代碼已經寫好了,就差存儲到csv中去了。

          他的原始代碼如下:

          import requests
          from lxml import etree
          import csv
          import time
          import pandas as pd 
          
          
          def gdpData(page):
              url=f'https://www.hongheiku.com/category/gdjsgdp/page/{page}'
              headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
              resp=requests.get(url,headers=headers)
          # print(resp.text)
              data(resp.text)
          file=open('data.csv',mode='a',encoding='utf-8',newline='')
          csv_write=csv.DictWriter(file,fieldnames=['排名','地區','GDP','年份'])
          csv_write.writeheader()
          def data(text):
              e=etree.HTML(text)
              lst=e.xpath('//*[@id="tablepress-48"]/tbody/tr[@class="even"]')
              for l in lst:
                  no=l.xpath('./td[1]/center/span/text()')
                  name=l.xpath('./td[2]/a/center/text()')
                  team=l.xpath('./td[3]/center/text()')  
                  year=l.xpath('./td[4]/center/text()')
                  data_dict={
                      '排名':no,
                      '地區':name,
                      'GDP':team,
                      '年份':year
                  }
                  print(f'排名:{no} 地區:{name} GDP:{team} 年份:{year} ')
                  csv_write.writerow(data_dict)
          file.close()
          url='https://www.hongheiku.com/category/gdjsgdp'
          headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
          resp=requests.get(url,headers=headers)
          # print(resp.text)
          data(resp.text)
          e=etree.HTML(resp.text)
          #//*[@id="tablepress-48"]/tbody/tr[192]/td[3]/center
          count=e.xpath('//div[@class="pagination pagination-multi"][last()]/ul/li[last()]/span/text()')[0].split(' ')[1]
          for index in range(int(count) - 1):
              gdpData(index + 2)
          

          二、實現過程

          這里粉絲給了一瓶冰紅茶的費用,一個熱心市民給了一份代碼,在他的代碼基礎上進行修改的,代碼如下:

          import requests
          from lxml import etree
          import csv
          import time
          import pandas as pd
          
          
          def gdpData(page):
              url=f'https://www.hongheiku.com/category/gdjsgdp/page/{page}'
              headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
              resp=requests.get(url,headers=headers)
          # print(resp.text)
              data(resp.text)
          
          def data(text):
              file=open('data.csv', mode='a', encoding='utf-8', newline='')
              csv_write=csv.DictWriter(file, fieldnames=['排名', '地區', 'GDP', '年份'])
              csv_write.writeheader()
              e=etree.HTML(text)
              lst=e.xpath('//*[@id="tablepress-48"]/tbody/tr[@class="even"]')
              for l in lst:
                  no=''.join(l.xpath('./td[1]/center/span/text()'))
                  name=''.join(l.xpath('./td[2]/a/center/text()')[0])
                  team=''.join(l.xpath('./td[3]/center/text()'))
                  year=''.join(l.xpath('./td[4]/center/text()'))
                  data_dict={
                      '排名':no,
                      '地區':name,
                      'GDP':team,
                      '年份':year
                  }
                  print(f'排名:{no} 地區:{name} GDP:{team} 年份:{year} ')
                  csv_write.writerow(data_dict)
              file.close()
          
          url='https://www.hongheiku.com/category/gdjsgdp'
          headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
          resp=requests.get(url,headers=headers)
          # print(resp.text)
          data(resp.text)
          
          e=etree.HTML(resp.text)
          #//*[@id="tablepress-48"]/tbody/tr[192]/td[3]/center
          count=e.xpath('//div[@class="pagination pagination-multi"][last()]/ul/li[last()]/span/text()')[0].split(' ')[1]
          for index in range(int(count) - 1):
              gdpData(index + 2)
          

          代碼運行之后,數據就存儲到csv中去了。

          順利地解決了粉絲的問題!

          三、總結

          大家好,我是皮皮。這篇文章主要盤點了一個Python網絡爬蟲后數據存儲的問題,文中針對該問題,給出了具體的解析和代碼實現,幫助粉絲順利解決了問題。

          最后感謝粉絲【藍桉】提問,感謝【熱心市民】給出的思路和代碼解析,感謝【eric】等人參與學習交流。

          天學習python的CSV文件內容轉換為HTML輸出,并記錄學習過程歡迎大家一起交流分享。



          首先看我桌面的person_info.csv文件內容如下:



          接下來新建一個python文件命名為py3_csv2html.py,在這個文件中進行操作代碼編寫:

          import csv
          ####將csv文件中的名字列提出來顯示到html中
          #定義html輸出變量
          html_output=''
          #定義list列表存放名字
          names=[]
          encode='UTF-8 sig'
          with open('person_info.csv','r',encoding=encode) as csv_file:
           csv_data=csv.reader(csv_file)
           #根據上圖數據的格式,我們不需要
           #標題頭和第一行非正常數據
           #使用next()跳過去
           #next()方法以后學會說到
           #可以看下面的截圖就明白了
           next(csv_data)
           next(csv_data)
           for line in csv_data:
           #將文件中名字添加到names中去
           #這里使用fstring代替了string的format方式
           names.append(f"{line[0]}")
          html_output +=f"<p>文件中一共有{len(names)}個人。</p>"
          html_output +="\n<ul>"
          for name in names:
           html_output +=f"\n\t<li>{name}</li>"
          html_output +="\n</ul>"
          print(html_output)
          #*****以上使用csv的reader方式實現*****
          #大家可以根據上一篇文章中csv的第二種DictReader()
          #方式實現如上功能,這里就不做演示了。
          

          解析person_info.csv中的數據,得到如下圖:



          這里我們不需要表頭和第一行壞數據,所以使用兩次next()。

          以上代碼運行得到的結果圖:



          今天初學python的CSV文件內容轉換為HTML輸出就到這里!

          關注公號yale記

          下面的是我的公眾號二維碼圖片,歡迎關注。

          能:

          • Modbus通訊讀取數據
          • 保存數據為csv格式

          Node-RED界面:

          功能:

          資源鏈接:han-link.cn/4240.html

          #妙筆生花創作挑戰#


          主站蜘蛛池模板: 色系一区二区三区四区五区| 无码少妇丰满熟妇一区二区| 国产精品夜色一区二区三区| 视频一区二区中文字幕| 日本无卡码一区二区三区| 国产激情无码一区二区app| 爆乳熟妇一区二区三区霸乳| 99在线精品一区二区三区| 日本成人一区二区三区| 中文国产成人精品久久一区| 国产裸体舞一区二区三区| 中文字幕人妻AV一区二区| 肉色超薄丝袜脚交一区二区| 国产一区二区三区不卡观| 在线视频一区二区三区三区不卡| 国产av一区二区精品久久凹凸| 色一情一乱一伦一区二区三欧美 | 天堂国产一区二区三区| 中文字幕在线一区二区三区| 国产成人精品一区二区三区| 精品视频在线观看一区二区三区| 欧美日韩精品一区二区在线观看| 老熟女高潮一区二区三区| 在线中文字幕一区| 精品午夜福利无人区乱码一区| 亚洲综合一区二区精品导航| 亚洲AV美女一区二区三区 | 精品无码一区二区三区水蜜桃| 国产一区二区三区免费在线观看| 日韩三级一区二区三区| 精品视频一区在线观看| 丰满岳妇乱一区二区三区| 国产99精品一区二区三区免费| 久久精品国产亚洲一区二区三区| 色精品一区二区三区| 91精品一区国产高清在线| 日本一区二区免费看| 国产乱码一区二区三区| 日本一区中文字幕日本一二三区视频 | bt7086福利一区国产| 大香伊蕉日本一区二区|