日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python网络爬虫基础day01

發布時間:2025/3/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python网络爬虫基础day01 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  2019.5.13,今天在“小猿圈”跟著波波老師學習了爬蟲開發的第一章和第二章,總結下今天學的知識:

 爬蟲基礎介紹:  

  什么是爬蟲?
   - 通過編寫程序,模擬瀏覽器上網,然后讓其去互聯網上抓取數據的過程。

  爬蟲的價值:
   - 實際應用
   - 就業

  爬蟲究竟是合法還是違法的?
  - 在法律中不被禁止
   - 具有違法風險
   - 善意爬蟲 惡意爬蟲

  爬蟲帶來的風險可以體現在如下兩個方面:
   - 爬蟲干擾了被訪問網站的正常運營
   - 爬蟲抓取了受到法律保護的特定類型的數據或信息

  如何在使用編寫爬蟲的過程中避免進入局子的厄運呢?
   - 時常優化自己的程序,避免干擾被訪問網站的正常運行
   - 在使用,在使用,傳播爬取到的數據時,審查抓取到的內容,如果發現了設計到用戶
   隱私商業機密等敏感內容需要及時停止爬取或傳播

  爬蟲在使用場景中的分類:
   - 通用爬蟲:
   抓取系統重要組成部分。抓取的是一整張頁面數據。
  - 聚焦爬蟲:
  是建立在通用爬蟲的基礎之上,抓取的是頁面中特定的局部內容。
  - 增量式爬蟲:
   檢測網站中數據更新的情況,只會抓取網站中更新出來的數據。

  爬蟲的矛與盾

  反爬機制
  - 門戶網站,可以通過制定相應的策略或者技術手段,防止爬蟲程序進行網站數據的爬取。

  反反爬策略
  - 爬蟲程序可以通過制定相關的策略或者技術手段,破解門戶網站中具備的反爬機制,
   從而可以獲取門戶網站的數據

  robots.txt協議:
   - 君子協議。規定了網站中哪些數據可以被爬蟲爬取哪些數據不可以被爬取

  http協議
   - 概念:就是服務器和客戶端進行數據交互的一種形式。

  常用請求頭信息
   - User-Agent:請求載體的身份標識
   - Connection:請求完畢后,是斷開連接還是保持連接

  常用響應頭信息
   - Content-Type:服務器響應回客戶端的數據類型

  https協議:
   - 安全的超文本傳輸協議

  加密方式
  - 對稱密鑰加密
   發送方將密鑰通過網絡傳輸給接收方
  - 非對稱密鑰加密
   發送方創建密鑰對,對文件用公鑰進行加密,將公鑰傳輸給接收方,用密鑰對和私鑰解密
   - 證書密鑰加密
   對公鑰進行數字簽名,將公鑰和證書綁定在一起發送給接收方

requests模塊基礎:
  requests模塊:python中原生的一款基于網絡請求的模塊,功能非常強大,簡單便捷,效率極高。
  作用:模擬瀏覽器發請求。

  如何使用:(requests模塊的編碼流程)
   - 指定urL發起請求
   - 獲取響應數據
  - 持久化存儲

  環境安裝:
  - pip install requests
   - 也可以在pycharm中:Settings --> Project --> Project Interpreter --> "+" 添加requests
  實戰編碼:
  - 需求:爬取搜狗首頁的頁面數據

  實戰鞏固
   - 需求:爬取搜狗指定詞條對應的搜索結果頁面(簡易網頁采集器)
   - UA檢測
   - UA偽裝

   - 需求:破解百度翻譯
   - post請求(攜帶了參數)
   - 響應數據是一組json數據(如何確認?)
   打開頁面 --> F12 --> Network --> Headers --> Response Headers
       --> Content-Type --> application/json

  - 需求:爬取豆瓣電影分類排行榜 https://movie.douban.com/中的電影詳情數據
  - 打開頁面 --> F12 --> 滑動混輪,出現新的Name --> 查看Headers信息
   --> 用的是get()方法 --> 下拉到底端 --> 找到應該配置的參數后寫入字典
   --> 將字典參數傳到get()方法的形參params中

   - 需求:爬取肯德基餐廳查詢http://www.kfc.com.cn/kfccda/index.aspx中指定地點的餐廳數
   - 需求:爬取國家藥品監督管理總局中基于中華人民共和國化妝品生產許可證相關數據
        http://125.35.6.84:81/xk/

1 # Author:K 2 # 需求:爬取搜狗首頁的頁面數據 3 4 import requests 5 6 # step 1:指定url 7 url = 'https://www.sogou.com/' 8 9 # step 2:發起請求 10 response = requests.get(url = url) # get()方法會返回一個相應對象 11 12 # step 3:獲取響應數據: 13 page_text = response.text # text方法返回的是字符串形式的相應數據 14 print(page_text) 15 16 # step 4:持久化存儲 17 with open('./sogou.html','w',encoding='utf-8') as fp: 18 fp.write(page_text) 19 20 print("爬取數據結束!") 爬取搜狗首頁? 1 # Author:K 2 import requests 3 4 # UA偽裝: 5 headers = { 6 "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36" 7 } 8 9 keyword = input("Please input keyword:") 10 url = 'https://www.sogou.com/web?' 11 12 # 參數設置: 13 params = { 14 'query':keyword 15 } 16 17 response = requests.get(url = url,params = params,headers = headers) 18 19 data = response.text 20 21 fileName = keyword + '.html' 22 with open(fileName,'w',encoding='utf-8') as fp: 23 fp.write(data) 24 25 print("爬取結束!") 簡易網頁采集器 1 # Author:K 2 3 import requests 4 import json 5 6 url = 'https://fanyi.baidu.com/sug' 7 8 headers = { 9 "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36" 10 } 11 12 kw = input("Please input keyword:") 13 data = { 14 'kw':kw 15 } 16 17 response = requests.post(url = url,data = data,headers = headers) 18 19 dic_obj = response.json() # 要確定服務器響應的son數據才能使用此方法 20 21 # 存儲到本地 22 fileName = kw + '.json' 23 fp = open(fileName,'w',encoding='utf-8') 24 json.dump(dic_obj,fp = fp,ensure_ascii=False) # json文件中有中文,不能使用ascii編碼 25 26 print("爬取結束!") 破解百度翻譯 1 # Author:K 2 import requests 3 import json 4 5 url = 'https://movie.douban.com/j/chart/top_list' 6 7 start_movie = input("Please input number that which movie you want to choose first:") 8 limit_movie = input("Please input number that how many movie one time display:") 9 10 params = { 11 "type": "5", 12 "interval_id": "100:90", 13 "action": "", 14 "start": start_movie, # 從第幾部電影開始取 15 "limit": limit_movie, # 一次取多少部 16 } 17 18 headers = { 19 "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36" 20 } 21 22 response = requests.get(url = url,params = params,headers = headers) 23 24 list_obj = response.json() 25 26 fileName = "doubanMovie.json" 27 fp = open(fileName,'w',encoding = 'utf-8') 28 json.dump(list_obj,fp = fp,ensure_ascii = False) 29 30 print("Successful crawling!") 豆瓣電影爬取 1 # Author:K 2 #--------------------------為什么查詢不出來???? 3 import requests 4 5 url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword' 6 7 headers = { 8 "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36" 9 } 10 11 #kw = input("Please input keyword:") 12 page_index = input("Which page you want to choose first:") 13 page_size = input("The pageSize is:") 14 15 data = { 16 "cname": " ", 17 "pid": " ", 18 "keyword": "北京", 19 "pageIndex": page_index, 20 "pageSize": page_size, 21 } 22 23 response = requests.post(url = url,data = data,headers = headers) 24 page_text = response.json() 25 print(page_text) 26 fileName = "KFC restaurant.txt" 27 with open(fileName,'w',encoding = 'utf-8') as fp: 28 fp.write(str(page_text)) 29 30 print("Successful crawling!") 肯德基餐廳查詢(未解決) 1 # Author:K 2 import requests 3 import json 4 5 url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList' 6 7 headers = { 8 "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36" 9 } 10 11 all_data_list = [] # 存儲企業詳情數據 12 id_list = [] # 存儲企業對應的id 13 14 for page in range(1,5): # !!!!!!!!!!!!為什么這里范圍大了就不行????????? 15 data = { 16 "on": " true", 17 "page": str(page), 18 "pageSize": " 15", 19 "productName": " ", 20 "conditionType": " 1", 21 "applyname": " ", 22 "applysn": " ", 23 } 24 25 dic_info = requests.post(url = url,data = data,headers = headers).json() 26 27 for dic in dic_info["list"]: 28 id_list.append(dic["ID"]) 29 30 info_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById' 31 for id in id_list: 32 id_data = { 33 "id":id 34 } 35 36 info_response = requests.post(url = info_url,data = id_data,headers = headers) 37 dic_data = info_response.json() 38 all_data_list.append(dic_data) 39 40 # 持久化存儲 41 fileName_data = "data.json" 42 fp = open(fileName_data,'w',encoding = 'utf-8') 43 json.dump(all_data_list,fp = fp,ensure_ascii = False) 44 45 print(len(all_data_list)) 46 print("successful crawling!") 藥監總局(未解決)

?

其中肯德基餐廳查詢和藥監總局這兩個案例未解決。后續在補充!















  

轉載于:https://www.cnblogs.com/KisInfinite/p/10859792.html

總結

以上是生活随笔為你收集整理的python网络爬虫基础day01的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。