爬蟲pythonjson(爬蟲python和java)

本文目錄一覽:

Python爬蟲筆記(二)requests模塊get,post,代理

  import requests

  base_url = ”

  response = requests.get(base_url)

        url=請求url,

        headers =請求頭字典,

        params = 請求參數字典。

        timeout = 超時時長,

    )—-response對象

  服務器響應包含:狀態行(協議,狀態碼)、響應頭,空行,響應正文

    字符串格式:response.text

    bytes類型:response.content

        response.headers[‘cookie’]

    response.text獲取到的字符串類型的響應正文,

    其實是通過下面的步驟獲取的:

        response.text = response.content.decode(response.encoding)

    產生的原因:編碼和解碼的編碼格式不一致造成的。

        str.encode(‘編碼’)—將字符串按指定編碼解碼成bytes類型

        bytes.decode(‘編碼’)—將bytes類型按指定編碼編碼成字符串。

    a、response.content.decode(‘頁面正確的編碼格式’)

        meta http-equiv=”content-type” content=”text/html;charset=utf-8″

    b、找到正確的編碼,設置到response.encoding中

        response.encoding = 正確的編碼

        response.text—正確的頁面內容。

  a、沒有請求參數的情況下,只需要確定url和headers字典。

  b、get請求是有請求參數。

    在chrome瀏覽器中,下面找query_string_params,

    將裡面的參數封裝到params字典中。

  c、分頁主要是查看每頁中,請求參數頁碼字段的變化,

  找到變化規律,用for循環就可以做到分頁。

  requests.post(

    url=請求url,

    headers = 請求頭字典,

    data=請求數據字典

    timeout=超時時長

  )—response對象

  post請求一般返回數據都是json數據。

(1)response.json()—json字符串所對應的python的list或者dict

(2)用 json 模塊。

    json.loads(json_str)—-json_data(python的list或者dict)

    json.dumps(json_data)—json_str

  post請求能否成功,關鍵看**請求參數**。

  如何查找是哪個請求參數在影響數據獲取?

  —通過對比,找到變化的參數。

  變化參數如何找到參數的生成方式,就是解決這個ajax請求數據獲取的途徑。

**尋找的辦法**有以下幾種:

    (1)寫死在頁面。

    (2)寫在js中。

    (3)請求參數是在之前的一條ajax請求的數據裡面提前獲取好的。

  代理形象的說,他是網絡信息中轉站。

  實際上就是在本機和服務器之間架了一座橋。

  a、突破自身ip訪問現實,可以訪問一些平時訪問不到網站。

  b、訪問一些單位或者團體的資源。

  c、提高訪問速度。代理的服務器主要作用就是中轉,

  所以一般代理服務裡面都是用內存來進行數據存儲的。

  d、隱藏ip。

    FTP代理服務器—21,2121

    HTTP代理服務器—80,8080

    SSL/TLS代理:主要用訪問加密網站。端口:443

    telnet代理 :主要用telnet遠程控制,端口一般為23

    高度匿名代理:數據包會原封不動轉化,在服務段看來,就好像一個普通用戶在訪問,做到完全隱藏ip。

    普通匿名代理:數據包會做一些改動,服務器有可能找到原ip。

    透明代理:不但改動數據,還會告訴服務,是誰訪問的。

    間諜代理:指組織或者個人用於記錄用戶傳輸數據,然後進行研究,監控等目的的代理。   

  proxies = {

    ‘代理服務器的類型’:’代理ip’

  }

  response = requests.get(proxies = proxies)

  代理服務器的類型:http,https,ftp

  代理ip:

Python爬蟲(七)數據處理方法之JSON

JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation),是輕量級的文本數據交換格式,且具有自我描述性,更易理解。

JSON看起來像python類型(列表,字典)的字符串。

在之前的文章中,我們說到了怎麼用response的方法,獲取到網頁正確解碼後的字符串。如果還有不懂的,可以先閱讀 Python爬蟲(三)Requests庫 。接下來以有道翻譯為例子,說說怎麼通過網頁解碼後的字符串,提取到翻譯結果。

再結合上述有道翻譯的例子,得到字典類型的返回結果,並提取出來翻譯結果。

將上述例子的dict_json換成str字符串,再寫入文本中。

執行完上述的程序,會得到一個fanyi.txt的文件,其結果如下:{“type”: “ZH_CN2EN”, “errorCode”: 0, “elapsedTime”: 1, “translateResult”: [[{“src”: “\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528python”, “tgt”: “Life is too short, I use python”}]]}。這樣子的一份文檔,中文部分顯示的是二進制,且格式非常不利於閱讀,這並不是我們想要的結果。好在json.dumps()為我們提供的兩個方法,以幫助我們更好閱讀文檔。

1.ensure_ascii,能夠讓中文顯示成中文;

2.indent,能夠讓下一行在第一行的基礎上空格。

其用法如下:

Python與爬蟲有什麼關係?

Python是一門編程語言,爬蟲只是Python的一個發展方向,有專業的庫來實現各種爬蟲操作。

因為Python提供了如urllib、re、json、pyquery等模塊,同時又有很多成型框架,如Scrapy框架、PySpider爬蟲系統等,本身又是十分的簡潔方便,所以和爬蟲聯繫在一起。

Python是完全面向對象的語言。函數、模塊、數字、字符串都是對象。並且完全支持繼承、重載、派生、多繼承,有益於增強源代碼的復用性。Python支持重載運算符和動態類型。相對於Lisp這種傳統的函數式編程語言,Python對函數式設計只提供了有限的支持。有兩個標準庫(functools, itertools)提供了Haskell和Standard ML中久經考驗的函數式程序設計工具。

擴展資料:

網頁爬蟲的行為通常是四種策略組合的結果。

1、選擇策略,決定所要下載的頁面;

2、重新訪問策略,決定什麼時候檢查頁面的更新變化;

3、平衡禮貌策略,指出怎樣避免站點超載;

4、並行策略,指出怎麼協同達到分布式抓取的效果。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/207111.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-08 14:20
下一篇 2024-12-08 14:20

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論