成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

開發 后端
作為一名合格的腦殘粉,為了發展我的下線,接下來我會詳細的介紹Python的安裝到開發工具的簡單介紹,并編寫一個抓取天氣信息數據并儲存到數據庫的例子。

[[256751]]

 

基于大眾對Python的大肆吹捧和贊賞,作為一名Java從業人員,看了Python的書籍之后,決定做一名python的腦殘粉。

作為一名合格的腦殘粉(標題黨ノ◕ω◕)ノ),為了發展我的下線,接下來我會詳細的介紹Python的安裝到開發工具的簡單介紹,并編寫一個抓取天氣信息數據并儲存到數據庫的例子。(這篇文章適用于完全不了解Python的小白超超超快速入門)

如果有時間的話,強烈建議跟著一起操作一遍,因為介紹的真的很詳細了。

源碼視頻書籍練習題等資料可以私信小編01獲取

1、Python 安裝

2、PyCharm(ide) 安裝

3、抓取天氣信息

4、數據寫入excel

5、數據寫入數據庫

1、Python安裝

下載 Python: 官網地址: https://www.python.org/ 選擇download 再選擇你電腦系統,小編是Windows系統的 所以就選擇

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

 

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

 

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

 

2、Pycharm安裝

下載 PyCharm : 官網地址:http://www.jetbrains.com/pycharm/

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

 

免費版本的可以會有部分功能缺失,所以不推薦,所以這里我們選擇下載企業版。

安裝好 PyCharm,***打開可能需要你 輸入郵箱 或者 輸入激活碼

獲取免費的激活碼:http://idea.lanyus.com/

3、抓取天氣信息

我們計劃抓取的數據:杭州的天氣信息,杭州天氣 可以先看一下這個網站。

實現數據抓取的邏輯:使用python 請求 URL,會返回對應的 HTML 信息,我們解析 html,獲得自己需要的數據。(很簡單的邏輯)

***步:創建 Python 文件

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

 

寫***段Python代碼

  1. if __name__ == '__main__'
  2.  url = 'http://www.weather.com.cn/weather/101210101.shtml'  
  3.  print('my frist python file'

這段代碼類似于 Java 中的 Main 方法。可以直接鼠標右鍵,選擇 Run。

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

第二步:請求RUL

python 的強大之處就在于它有大量的模塊(類似于Java 的 jar 包)可以直接拿來使用。

我們需要安裝一個 request 模塊: File - Setting - Product - Product Interpreter

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

點擊如上圖的 + 號,就可以安裝 Python 模塊了。搜索

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

 

我們順便再安裝一個 beautifulSoup4 和 pymysql 模塊,beautifulSoup4 模塊是用來解析 html 的,可以對象化 HTML 字符串。pymysql 模塊是用來連接 mysql 數據庫使用的。

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

相關的模塊都安裝之后,就可以開心的敲代碼了。

定義一個 getContent 方法:

  1. # 導入相關聯的包 
  2. import requests 
  3. import time 
  4. import random 
  5. import socket 
  6. import http.client 
  7. import pymysql 
  8. from bs4 import BeautifulSoup 
  9. def getContent(url , data = None): 
  10.  header={ 
  11.  'Accept''text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
  12.  'Accept-Encoding''gzip, deflate, sdch'
  13.  'Accept-Language''zh-CN,zh;q=0.8'
  14.  'Connection''keep-alive'
  15.  'User-Agent''Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235' 
  16.  } # request 的請求頭 
  17.  timeout = random.choice(range(80, 180)) 
  18.  while True
  19.  try: 
  20.  rep = requests.get(url,headers = header,timeout = timeout) #請求url地址,獲得返回 response 信息 
  21.  rep.encoding = 'utf-8' 
  22.  break 
  23.  except socket.timeout as e: # 以下都是異常處理 
  24.  print( '3:', e) 
  25.  time.sleep(random.choice(range(8,15))) 
  26.  except socket.error as e: 
  27.  print( '4:', e) 
  28.  time.sleep(random.choice(range(20, 60))) 
  29.  except http.client.BadStatusLine as e: 
  30.  print( '5:', e) 
  31.  time.sleep(random.choice(range(30, 80))) 
  32.  except http.client.IncompleteRead as e: 
  33.  print( '6:', e) 
  34.  time.sleep(random.choice(range(5, 15))) 
  35.  print('request success'
  36.  return rep.text # 返回的 Html 全文 

在 main 方法中調用:

  1. if __name__ == '__main__'
  2.  url ='http://www.weather.com.cn/weather/101210101.shtml' 
  3.  html = getContent(url) # 調用獲取網頁信息 
  4.  print('my frist python file'

第三步:分析頁面數據

定義一個 getData 方法:

  1. def getData(html_text): 
  2.  final = [] 
  3.  bs = BeautifulSoup(html_text, "html.parser") # 創建BeautifulSoup對象 
  4.  body = bs.body #獲取body 
  5.  data = body.find('div',{'id''7d'}) 
  6.  ul = data.find('ul'
  7.  li = ul.find_all('li'
  8.  for day in li: 
  9.  temp = [] 
  10.  date = day.find('h1').string 
  11.  temp.append(date) #添加日期 
  12.  inf = day.find_all('p'
  13.  weather = inf[0].string #天氣 
  14.  temp.append(weather) 
  15.  temperature_highest = inf[1].find('span').string #***溫度 
  16.  temperature_low = inf[1].find('i').string # ***溫度 
  17.  temp.append(temperature_low) 
  18.      temp.append(temperature_highest) 
  19.  final.append(temp
  20.  print('getDate success'
  21.  return final 

上面的解析其實就是按照 HTML 的規則解析的。可以打開 杭州天氣 在開發者模式中(F12),看一下頁面的元素分布。

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

在 main 方法中調用:

  1. if __name__ == '__main__'
  2.  url ='http://www.weather.com.cn/weather/101210101.shtml' 
  3.  html = getContent(url) # 獲取網頁信息 
  4.  result = getData(html) # 解析網頁信息,拿到需要的數據 
  5.  print('my frist python file'

數據寫入excel

現在我們已經在 Python 中拿到了想要的數據,對于這些數據我們可以先存放起來,比如把數據寫入 csv 中。

定義一個 writeDate 方法:

  1. import csv #導入包 
  2. def writeData(data, name): 
  3.  with open(name'a', errors='ignore', newline=''as f: 
  4.  f_csv = csv.writer(f) 
  5.  f_csv.writerows(data) 
  6.  print('write_csv success'

在 main 方法中調用:

  1. if __name__ == '__main__'
  2.  url ='http://www.weather.com.cn/weather/101210101.shtml' 
  3.  html = getContent(url) # 獲取網頁信息 
  4.  result = getData(html) # 解析網頁信息,拿到需要的數據 
  5.  writeData(result, 'D:/py_work/venv/Include/weather.csv') #數據寫入到 csv文檔中 
  6.  print('my frist python file'

執行之后呢,再指定路徑下就會多出一個 weather.csv 文件,可以打開看一下內容。

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

到這里最簡單的數據抓取--儲存就完成了。

數據寫入數據庫

因為一般情況下都會把數據存儲在數據庫中,所以我們以 mysql 數據庫為例,嘗試著把數據寫入到我們的數據庫中。

***步創建WEATHER 表:

創建表可以在直接在 mysql 客戶端進行操作,也可能用 python 創建表。在這里 我們使用 python 來創建一張 WEATHER 表。

定義一個 createTable 方法:(之前已經導入了 import pymysql 如果沒有的話需要導入包)

  1. def createTable(): 
  2.  # 打開數據庫連接 
  3.  db = pymysql.connect("localhost""zww""960128""test"
  4.  # 使用 cursor() 方法創建一個游標對象 cursor 
  5.  cursor = db.cursor() 
  6.  # 使用 execute() 方法執行 SQL 查詢 
  7.  cursor.execute("SELECT VERSION()"
  8.  # 使用 fetchone() 方法獲取單條數據. 
  9.  data = cursor.fetchone() 
  10.  print("Database version : %s " % data) # 顯示數據庫版本(可忽略,作為個栗子) 
  11.  # 使用 execute() 方法執行 SQL,如果表存在則刪除 
  12.  cursor.execute("DROP TABLE IF EXISTS WEATHER"
  13.  # 使用預處理語句創建表 
  14.  sql = """CREATE TABLE WEATHER ( 
  15.  w_id int(8) not null primary key auto_increment,  
  16.  w_date varchar(20) NOT NULL , 
  17.  w_detail varchar(30), 
  18.  w_temperature_low varchar(10), 
  19.  w_temperature_high varchar(10)) DEFAULT CHARSET=utf8""" # 這里需要注意設置編碼格式,不然中文數據無法插入 
  20.  cursor.execute(sql) 
  21.  # 關閉數據庫連接 
  22.  db.close() 
  23.   print('create table success'

在 main 方法中調用:

  1. if __name__ == '__main__'
  2.  url ='http://www.weather.com.cn/weather/101210101.shtml' 
  3.  html = getContent(url) # 獲取網頁信息 
  4.  result = getData(html) # 解析網頁信息,拿到需要的數據 
  5.  writeData(result, 'D:/py_work/venv/Include/weather.csv') #數據寫入到 csv文檔中 
  6.  createTable() #表創建一次就好了,注意 
  7.  print('my frist python file'

執行之后去檢查一下數據庫,看一下 weather 表是否創建成功了。

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

第二步批量寫入數據至 WEATHER 表:

定義一個 insertData 方法:

  1. def insert_data(datas): 
  2.  # 打開數據庫連接 
  3.  db = pymysql.connect("localhost""zww""960128""test"
  4.  # 使用 cursor() 方法創建一個游標對象 cursor 
  5.  cursor = db.cursor() 
  6.  try: 
  7.  # 批量插入數據 
  8.  cursor.executemany('insert into WEATHER(w_id, w_date, w_detail, w_temperature_low, w_temperature_high) value(null, %s,%s,%s,%s)', datas) 
  9.  # sql = "INSERT INTO WEATHER(w_id,  
  10.  # w_date, w_detail, w_temperature)  
  11.  # VALUES (null'%s','%s','%s')" %  
  12.  # (data[0], data[1], data[2]) 
  13.  # cursor.execute(sql) #單條數據寫入 
  14.  # 提交到數據庫執行 
  15.  db.commit() 
  16.  except Exception as e: 
  17.  print('插入時發生異常' + e) 
  18.  # 如果發生錯誤則回滾 
  19.  db.rollback() 
  20.  # 關閉數據庫連接 
  21.  db.close() 

在 main 方法中調用:

  1. if __name__ == '__main__'
  2.  url ='http://www.weather.com.cn/weather/101210101.shtml' 
  3.  html = getContent(url) # 獲取網頁信息 
  4.  result = getData(html) # 解析網頁信息,拿到需要的數據 
  5.  writeData(result, 'D:/py_work/venv/Include/weather.csv') #數據寫入到 csv文檔中 
  6.  # createTable() #表創建一次就好了,注意 
  7.  insertData(result) #批量寫入數據 
  8.  print('my frist python file'

檢查:執行這段 Python 語句后,看一下數據庫是否有寫入數據。有的話就大功告成了。

Python入門只需20分鐘,從安裝到數據抓取、存儲原來這么簡單

 

全部代碼看這里:

  1. # 導入相關聯的包 
  2. import requests 
  3. import time 
  4. import random 
  5. import socket 
  6. import http.client 
  7. import pymysql 
  8. from bs4 import BeautifulSoup 
  9. import csv 
  10. def getContent(url , data = None): 
  11.  header={ 
  12.  'Accept''text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
  13.  'Accept-Encoding''gzip, deflate, sdch'
  14.  'Accept-Language''zh-CN,zh;q=0.8'
  15.  'Connection''keep-alive'
  16.  'User-Agent''Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235' 
  17.  } # request 的請求頭 
  18.  timeout = random.choice(range(80, 180)) 
  19.  while True
  20.  try: 
  21.  rep = requests.get(url,headers = header,timeout = timeout) #請求url地址,獲得返回 response 信息 
  22.  rep.encoding = 'utf-8' 
  23.  break 
  24.  except socket.timeout as e: # 以下都是異常處理 
  25.  print( '3:', e) 
  26.  time.sleep(random.choice(range(8,15))) 
  27.  except socket.error as e: 
  28.  print( '4:', e) 
  29.  time.sleep(random.choice(range(20, 60))) 
  30.  except http.client.BadStatusLine as e: 
  31.  print( '5:', e) 
  32.  time.sleep(random.choice(range(30, 80))) 
  33.  except http.client.IncompleteRead as e: 
  34.  print( '6:', e) 
  35.  time.sleep(random.choice(range(5, 15))) 
  36.  print('request success'
  37.  return rep.text # 返回的 Html 全文 
  38. def getData(html_text): 
  39.  final = [] 
  40.  bs = BeautifulSoup(html_text, "html.parser") # 創建BeautifulSoup對象 
  41.  body = bs.body #獲取body 
  42.  data = body.find('div',{'id''7d'}) 
  43.  ul = data.find('ul'
  44.  li = ul.find_all('li'
  45.  for day in li: 
  46.  temp = [] 
  47.  date = day.find('h1').string 
  48.  temp.append(date) #添加日期 
  49.  inf = day.find_all('p'
  50.  weather = inf[0].string #天氣 
  51.  temp.append(weather) 
  52.  temperature_highest = inf[1].find('span').string #***溫度 
  53.  temperature_low = inf[1].find('i').string # ***溫度 
  54.  temp.append(temperature_highest) 
  55.  temp.append(temperature_low) 
  56.  final.append(temp
  57.  print('getDate success'
  58.  return final 
  59. def writeData(data, name): 
  60.  with open(name'a', errors='ignore', newline=''as f: 
  61.  f_csv = csv.writer(f) 
  62.  f_csv.writerows(data) 
  63.  print('write_csv success'
  64. def createTable(): 
  65.  # 打開數據庫連接 
  66.  db = pymysql.connect("localhost""zww""960128""test"
  67.  # 使用 cursor() 方法創建一個游標對象 cursor 
  68.  cursor = db.cursor() 
  69.  # 使用 execute() 方法執行 SQL 查詢 
  70.  cursor.execute("SELECT VERSION()"
  71.  # 使用 fetchone() 方法獲取單條數據. 
  72.  data = cursor.fetchone() 
  73.  print("Database version : %s " % data) # 顯示數據庫版本(可忽略,作為個栗子) 
  74.  # 使用 execute() 方法執行 SQL,如果表存在則刪除 
  75.  cursor.execute("DROP TABLE IF EXISTS WEATHER"
  76.  # 使用預處理語句創建表 
  77.  sql = """CREATE TABLE WEATHER ( 
  78.  w_id int(8) not null primary key auto_increment,  
  79.  w_date varchar(20) NOT NULL , 
  80.  w_detail varchar(30), 
  81.  w_temperature_low varchar(10), 
  82.  w_temperature_high varchar(10)) DEFAULT CHARSET=utf8""
  83.  cursor.execute(sql) 
  84.  # 關閉數據庫連接 
  85.  db.close() 
  86.  print('create table success'
  87. def insertData(datas): 
  88.  # 打開數據庫連接 
  89.  db = pymysql.connect("localhost""zww""960128""test"
  90.  # 使用 cursor() 方法創建一個游標對象 cursor 
  91.  cursor = db.cursor() 
  92.  try: 
  93.  # 批量插入數據 
  94.  cursor.executemany('insert into WEATHER(w_id, w_date, w_detail, w_temperature_low, w_temperature_high) value(null, %s,%s,%s,%s)', datas) 
  95.  # 提交到數據庫執行 
  96.  db.commit() 
  97.  except Exception as e: 
  98.  print('插入時發生異常' + e) 
  99.  # 如果發生錯誤則回滾 
  100.  db.rollback() 
  101.  # 關閉數據庫連接 
  102.  db.close() 
  103.  print('insert data success'
  104. if __name__ == '__main__'
  105.  url ='http://www.weather.com.cn/weather/101210101.shtml' 
  106.  html = getContent(url) # 獲取網頁信息 
  107.  result = getData(html) # 解析網頁信息,拿到需要的數據 
  108.  writeData(result, 'D:/py_work/venv/Include/weather.csv') #數據寫入到 csv文檔中 
  109.  # createTable() #表創建一次就好了,注意 
  110.  insertData(result) #批量寫入數據 
  111.  print('my frist python file')  

 

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2017-01-05 14:16:28

連接池數據代碼

2016-09-13 20:58:41

MySQ基礎入門Sql

2020-11-27 10:34:01

HTTPHTTPS模型

2013-09-17 09:49:29

程序集讀懂程序編程

2022-09-30 15:46:26

Babel編譯器插件

2016-08-03 16:01:47

GitLinux開源

2009-07-09 17:43:30

Chrome OS截圖Chrome操作系統截Chrome

2021-11-19 11:16:29

Git命令Linux

2023-09-11 08:25:57

PythonPyQt

2023-09-08 07:54:01

TkinterPython

2021-04-19 05:42:51

Mmap文件系統

2015-01-05 09:35:54

云計算應用程序開發

2022-06-17 08:05:28

Grafana監控儀表盤系統

2019-08-29 11:10:07

PythonVimLinux

2023-11-01 14:49:07

2012-07-10 01:22:32

PythonPython教程

2013-06-27 09:41:19

LuaLua語言Lua語言快速入門

2016-03-21 11:09:52

Tableau/大數據

2023-06-07 08:27:10

Docker容器

2014-11-10 12:29:52

客服網站
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久岛国 | 日日夜夜精品视频 | 久久国产精品99久久久久久丝袜 | 欧美亚洲在线 | 欧美日日| 手机看片在线播放 | 免费天天干 | 男女午夜免费视频 | 美女黄网站视频免费 | 国产99久久久久 | 五月激情婷婷在线 | 婷婷综合网 | 国产精品久久久久av | 中文在线视频 | 国产高清在线观看 | 亚洲国产高清在线观看 | 日本超碰 | 96国产精品久久久久aⅴ四区 | 秋霞电影一区二区三区 | 亚洲电影免费 | 国产一区二区三区四区三区四 | 国产中文字幕在线观看 | 国产日韩欧美91 | 国产一区影院 | 久久精品男人的天堂 | 午夜在线 | 999re5这里只有精品 | 99久久精品一区二区毛片吞精 | 东方伊人免费在线观看 | 亚洲区一 | 亚洲网站在线播放 | 亚洲国产成人精品在线 | 最近中文字幕免费 | 少妇精品久久久久久久久久 | 精品国产一区二区久久 | 不卡一区二区在线观看 | 日本中文字幕一区 | 午夜电影网站 | 亚洲视频中文字幕 | www.亚洲区 | 综合欧美亚洲 |