淺談爬蟲 《一》 ===python

淺談爬蟲 《一》 ===python

?‘’正文之前先啰嗦一下,準確來說,在下還只是一個剛入門IT世界的菜鳥,工作近兩年了,之前做前端的時候就想寫博客來著,現在都轉做python了,如果還不開始寫點什么,估計時間都不會原諒這么懶散的我了……

閑話到此,下面說正事兒——首先來個爬蟲簡介

??咋一聽挺神秘的樣子,簡單來講爬蟲就是從網絡獲取資源,比如你想知道淘寶上的女裝什么顏色的銷量好,或者哪一款零食比較有賺頭兒…… ??在說現在流行的人工智能,其實所謂的人工智能也就是足夠的數據支撐,以及數據標記等等,使機器可以對足夠多的場景作出反應……以上純屬個人觀點,如有不對請指正

這次是真的講正題了,爬蟲分類,爬蟲原理,以及python代碼簡單實現

比較同用的說法:爬蟲分兩類

  • 通用爬蟲(也叫作搜索引擎爬蟲)
  • 聚焦爬蟲

總的來說都是網絡爬蟲!

????我們這里主要談論的是聚焦爬蟲:

爬蟲簡單來講分三步:

  1. 發起請求
  2. 得到反饋
  3. 處理數據

由于python2已經快要停止更新了(大概2020年停止), 所以我們這里直接談論python3的方法

# 導入需要的工具包
from urllib.request import Request,urlopen
# 發起請求(以請求百度為例) request = Request('http://www.baidu.com') # 得到反饋 response = urlopen(request) # 獲取數據流 data = response.read() # 數據打印并且轉碼為 UTF-8 print(data.decode("utf-8")) 
打印結果(簡略)
<!DOCTYPE html>
<!--STATUS OK-->
<html>
<head> ………… <title>百度一下,你就知道</title> …………

俗話說越是簡單的越南學習,在爬蟲這里就體現出來了, 上面的代碼看起來簡單,理解起來也沒難度,但是不實用,只要網站稍做防范(反爬蟲),就只能傻傻發呆了……,如果您打算從事爬蟲工作那么發爬蟲將是您工作生涯的中心!

下面介紹一個簡單的反爬蟲的例子:

from urllib.request import Request,urlopen
# 請求頭信息,偽裝成瀏覽器訪問
ua_header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} request = Request("http://note.youdao.com/iyoudao/?p=2411",headers=ua_header) #urlopen()函數,url是必須要傳入的,data如果傳入就是POST請求,如果不傳就是GETT請求 response = urlopen(request) #到服務器返回的數據,讀取里面的全部內容 response_data = response.read() #打印返回的數據 print(response_data.decode("utf-8")) 

只在請求頭(ua_header)里面添加(User-Agent)只是最簡單的偽裝反爬,更多的反爬蟲的方式包括但不限于cookie,session,代理等等。反爬方式有待探究,下次討論簡單代理以及爬蟲的其他庫

?


轉載于:https://www.cnblogs.com/LoongitArt/p/9398466.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451828.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451828.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451828.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Servlet全面講解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。Servlet&#xff08;Server Applet&#xff09;&#xff0c;全稱Java Servlet。是用Java編寫的服務器端程序。Servlet 是在服務器上運行的…

你的代碼可以是優雅的,但是還有更重要的

引用軟件設計有兩種方法&#xff1a;一種是盡可能地簡單&#xff0c;這種設計明顯沒有什么缺陷&#xff1b;另一種是盡可能地復雜&#xff0c;這種設計沒有明顯的缺陷。 ——C.A.R. Hoare&#xff0c;1980年圖靈獎講座在開發過程中&#xff0c;我的口頭禪是&#xff1a; Your c…

15--0~n-1中缺失的數字

文章目錄1. 問題描述2. 解題代碼1. 問題描述 一個長度為n-1的遞增排序數組中的所有數字都是唯一的&#xff0c;并且每個數字都在范圍0&#xff5e;n-1之內。在范圍0&#xff5e;n-1內的n個數字中有且只有一個數字不在該數組中&#xff0c;請找出這個數字。 示例 1: 輸入: [0,…

如何在README中使用圖片

將圖片放在倉庫里面&#xff0c;在文件里鏈接它&#xff0c;最后 push 到 github 上。 github 圖片鏈接格式&#xff1a; (http://github.com/yourname/your-repository/raw/master/images-folder/xxx.png) 要自己設定的&#xff1a;yourname, your-repository, your-folder…

Unity中傳入任意數,轉換成分,秒,并進行倒計時換算..(兩種方式)

第一種方式是利用Unity中的協程,代碼如下: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class DemoTest : MonoBehaviour {public Text text;//測試用的數字public int MyTime 60;void Start (){//開啟協程…

內核編程小結(引用)

https://www.cnblogs.com/fanling999/p/4509785.html轉載于:https://www.cnblogs.com/endenvor/p/9006507.html

JIRA 5.0.1 發布

Atlassian公司發布了JIRA 5.0.1版本&#xff0c;該版本相比JIRA 5.0有更多改進功能。1. 管理界面的改進 將更多頁面管理轉為對話框形式。例如點擊頁面右上方的“Add New”就可實現新增issue types、sub-tasks、field configurations 、screens。2. 性能改進 解決了基于Lucene 3…

java開啟新線程的三種方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 方式1&#xff1a;繼承Thread類 步驟: 1):定義一個類A繼承于Java.lang.Thread類. 2):在A類中覆蓋Thread類中的run方法. 3):我們在ru…

16 --刪除排序數組中的重復項

文章目錄1.問題描述2.代碼實現1.問題描述 給定一個排序數組&#xff0c;你需要在 原地 刪除重復出現的元素&#xff0c;使得每個元素只出現一次&#xff0c;返回移除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須在 原地 修改輸入數組 并在使用 O(1) 額外空間的…

jquery評分效果Rating精華版

參考&#xff1a;https://blog.csdn.net/bluceyoung/article/details/8573629轉載于:https://www.cnblogs.com/yingyigongzi/p/9400489.html

NVIDIA助力SiemensPLMSoftware“工業4.0創新實驗室”,攜手推進中國制造創新之路

今日&#xff0c;NVIDIA宣布為SiemensPLMSoftware在北京建成的“工業4.0創新實驗室”提供了支持。該實驗室配備SiemensPLMSoftware全面的產品生命周期管理解決方案&#xff0c;結合第三方硬件&#xff0c;向中國制造企業展示“數字化企業”的全景圖。實驗室的工作站全部配備NVI…

java中的native方法

一. 什么是Native Method簡單地講&#xff0c;一個Native Method就是一個java調用非java代碼的接口。一個Native Method是這樣一個java的方法&#xff1a;該方法的實現由非java語言實現&#xff0c;比如C。這個特征并非java所特有&#xff0c;很多其它的編程語言都有這一機制&a…

17--合并兩個有序數組

文章目錄1.問題描述2.代碼實現1.問題描述 給你兩個有序整數數組 nums1 和 nums2&#xff0c;請你將 nums2 合并到 nums1 中&#xff0c;使 nums1 成為一個有序數組。 說明: 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 。 你可以假設 nums1 有足夠的空間&#xff08;空間…

Maven 添加本地 jar 包、添加依賴 jar 文件到本地 Maven 倉庫、引用本地 jar

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 把要用的jar放在固定位置&#xff1a; 2.打開CMD&#xff0c;進入到libs文件夾: 3.運行如下命令&#xff1a; mvn install:install-…

如鵬網 net高級技術 第二章 委托和事件(復習)

委托 委托是一種數據類型&#xff0c;可以聲明委托類型變量。 委托是一種可以指向方法的數據類型。 聲明委托的方式:delegate返回值類型 委托類型名(參數)   比如  delegate void MyDel(int n) 注意這里的除了前面的delegate&#xff0c;剩下部分和聲明一個函數一樣&#…

黃文俊:Serverless小程序后端技術分享

歡迎大家前往騰訊云社區&#xff0c;獲取更多騰訊海量技術實踐干貨哦~ 黃文俊&#xff0c;現任騰訊云SCF無服務器云函數高級產品經理&#xff0c;多年企業級系統開發和架構工作經驗&#xff0c;對企業級存儲、容器平臺、微服務架構、無服務器計算等領域均有涉獵。今天講的是怎么…

最少編碼原則

本文作者是一位資深軟件工程師&#xff0c;他根據多年的編程經驗&#xff0c;把自己的觀點組織整理成本文&#xff0c;希望能給大家一點啟發。 “最少編碼原則”并不是說寫的代碼少到令意思表達不清楚。其實在很多情況下&#xff0c;可以只寫幾行代碼就能執行相同的邏輯&#x…

什么是標記接口

標識接口的作用 標識接口是沒有任何方法和屬性的接口。標識接口不對實現它的類有任何語義上的要求&#xff0c;它僅僅表明實現它的類屬于一個特定的類型。 標接口在Java語言中有一些很著名的應用&#xff0c;比如java.io.Serializable和java.rmi.Remote等接口便是標識接口。標識…

18--兩數之和 II - 輸入有序數組

文章目錄1.問題描述2.解題代碼1.問題描述 給定一個已按照升序排列 的有序數組&#xff0c;找到兩個數使得它們相加之和等于目標數。 函數應該返回這兩個下標值 index1 和 index2&#xff0c;其中 index1 必須小于 index2。 說明: 返回的下標值&#xff08;index1 和 index2&a…

阿里巴巴 連接池 druid 的使用、maven依賴

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. Druid是一個JDBC組件&#xff0c;它包括三部分&#xff1a; DruidDriver 代理Driver&#xff0c;能夠提供基于Filter&#xff0d;…