Python爬蟲零基礎實戰,簡潔實用!

1.爬蟲簡介

簡單來講,爬蟲就是一個探測機器,它的基本操作就是模擬人的行為去各個網站溜達,點點按鈕,查查數據,或者把看到的信息背回來。就像一只蟲子在一幢樓里不知疲倦地爬來爬去。

你可以簡單地想象:每個爬蟲都是你的“分身”。就像孫悟空拔了一撮汗毛,吹出一堆猴子一樣。

你每天使用的百度,其實就是利用了這種爬蟲技術:每天放出無數爬蟲到各個網站,把他們的信息抓回來,然后化好淡妝排著小隊等你來檢索。
搶票軟件,就相當于撒出去無數個分身,每一個分身都幫助你不斷刷新 12306 網站的火車余票。一旦發現有票,就馬上拍下來,然后對你喊:土豪快來付款。

  互聯網就像一張網,中間以各種鏈接連接在一起,而小小的爬蟲卻能在這張網上歡快的馳騁,代替人來進行很多繁重的任務,如搶票軟件、某度搜索引擎。

2.為什么用python做網頁爬蟲

  python作為一門易上手的語言,提供了豐富的API來抓取網頁文檔、模擬瀏覽器行為、對抓取到的數據進行處理。后面我們的演示中也會展示python爬蟲的簡介,爬取網頁內容的核心代碼可能只有短短幾行,卻能實現強大的功能。

3.python環境配置

  對于新手來說,最熟悉的還是windows環境。我使用的是anaconda+pycharm進行python代碼的編寫,這里anaconda方便進行外部庫的管理,而pycharm也是功能強大很流行的一款IDE。

4.我需要了解哪些python爬蟲的前置知識

  至少會一點python的基礎知識,如果不清楚的話,可以參加浙大翁愷的python慕課,或者自己找些介紹文檔,如? ? ? ?python入門教程。同時需要了解關于html的一些基礎知識,比如各種標簽代表的含義:

<!–…–>:定義注釋
<!DOCTYPE>?:定義文檔類型
<html>:html文檔的總標簽
<head>:定義頭部
<body>:定義網頁內容
<script>:定義腳本
<div>:division,定義分區,容器標簽
<p>:paragraph,定義段落
<a>:定義超鏈接
<span>:定義文本容器
<br>:換行
<form>:定義表單
<table>:定義表格
<th>:定義表頭
<tr>:表的行
<td>:表的列
<b>:定義粗體字
<img>:定義圖片

  熟悉上面這些html標簽將會方便我們進行正則表達式的處理,以及xPath和BeautifulSoup的學習。

5. 關于正則表達式

  python正則表達式相關知識較多,我們只需要了解一些基礎的即可,如:

    python正則表達式 菜鳥教程

    python正則表達式官方文檔

6.提取網頁內容并用正則表達式處理  

import re
import urllib.request
import chardetresponse=urllib.request.urlopen("http://news.hit.edu.cn/")#輸入參數為你想爬取的網頁URLhtml=response.read() #讀取到html變量中
chardet1=chardet.detect(html) #獲取編碼方式
html=html.decode(chardet1['encoding']) #按照獲取到的編碼方式進行處理

?  這里我們以某高校的官方新聞網站為例演示來進行python爬蟲操作,上面短短的幾行代碼就實現了將網頁內容爬取到本地的操作。

  接著就是對爬取到的內容進行正則表達式處理,得到我們想要獲取的內容,觀察網頁源代碼:

  

我們希望對其中的外部鏈接進行匹配,由之前了解到的正則表達式知識,實現如下:

mypatten="<li class=\"link-item\"><a href=\"(.*)\"><span>(.*)</span></a></li>"
mylist=re.findall(mypatten,html)
for i in mylist:print("外部鏈接地址:%s 網站名:%s" %(i[0],i[1]))

最后得到的效果是:

7.xPath和BeautifulSoup工具簡介

  除了用正則表達式處理得到的網頁文檔之外,我們還可以考慮網頁自身的架構。

XPath,全稱 XML Path Language,即 XML 路徑語言,它是一門在XML文檔中查找信息的語言。XPath 最初設計是用來搜尋XML文檔的,但是它同樣適用于 HTML 文檔的搜索。

  nodename選取此節點的所有子節點
  /從當前節點選取直接子節點
  //從當前節點選取子孫節點
  .選取當前節點
  ..選取當前節點的父節點
  @選取屬性

  在這里列出了XPath的常用匹配規則,例如 / 代表選取直接子節點,// 代表選擇所有子孫節點,. 代表選取當前節點,.. 代表選取當前節點的父節點,@ 則是加了屬性的限定,選取匹配屬性的特定節點。

from lxml import etree
import urllib.request
import chardet
response=urllib.request.urlopen("https://www.dahe.cn")html=response.read()
chardet1=chardet.detect(html)
html=html.decode(chardet1['encoding'])
etreehtml=etree.HTML(html)
mylist=etreehtml.xpath("/html/body/div/div/div/div/div/ul/div/li")

BeautifulSoup4是爬蟲必學的技能。BeautifulSoup最主要的功能是從網頁抓取數據,Beautiful Soup自動將輸入文檔轉換為Unicode編碼,輸出文檔轉換為utf-8編碼。BeautifulSoup支持Python標準庫中的HTML解析器,還支持一些第三方的解析器,如果我們不安裝它,則 Python 會使用 Python默認的解析器,lxml 解析器更加強大,速度更快,推薦使用lxml 解析器。

from bs4 import BeautifulSoup 
file = open('./aa.html', 'rb') 
html = file.read() 
bs = BeautifulSoup(html,"html.parser") # 縮進格式
print(bs.prettify()) # 格式化html結構
print(bs.title) # 獲取title標簽的名稱
print(bs.title.name) # 獲取title標簽的文本內容
print(bs.title.string) # 獲取head標簽的所有內容
print(bs.head) # 獲取第一個div標簽中的所有內容
print(bs.div) # 獲取第一個div標簽的id的值
print(bs.div["id"]) # 獲取第一個a標簽中的所有內容
print(bs.a) # 獲取所有的a標簽中的所有內容
print(bs.find_all("a")) # 獲取id="u1"
print(bs.find(id="u1")) # 獲取所有的a標簽,并遍歷打印a標簽中的href的值
for item in bs.find_all("a"): print(item.get("href")) # 獲取所有的a標簽,并遍歷打印a標簽的文本值
for item in bs.find_all("a"): print(item.get_text())

最后:如果你對Python感興趣,想要學習Python,希望可以幫到你,一起加油!以上是給大家分享的Python全套學習資料,都是我自己學習時整理的:?

一、Python所有方向的學習路線

Python所有方向路線就是把Python常用的技術點做整理,形成各個領域的知識點匯總,它的用處就在于,你可以按照上面的知識點去找對應的學習資源,保證自己學得較為全面。

圖片

圖片

二、學習軟件

工欲善其事必先利其器。學習Python常用的開發軟件都在這里了,還有環境配置的教程,給大家節省了很多時間。

圖片

三、全套PDF電子書

書籍的好處就在于權威和體系健全,剛開始學習的時候你可以只看視頻或者聽某個人講課,但等你學完之后,你覺得你掌握了,這時候建議還是得去看一下書籍,看權威技術書籍也是每個程序員必經之路。

圖片

四、入門學習視頻全套

我們在看視頻學習的時候,不能光動眼動腦不動手,比較科學的學習方法是在理解之后運用它們,這時候練手項目就很適合了。

圖片

圖片

五、實戰案例

光學理論是沒用的,要學會跟著一起敲,要動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰案例來學習。

圖片

圖片

???**學習資源已打包,需要的小伙伴可以戳這里:【學習資料】?

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

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

相關文章

論文學習 --- RL Maximumdiffusion reinforcement learning

前言 個人拙見,如果我的理解有問題歡迎討論 (●′ω`●) 文章出處:https://techxplore.com/news/2024-05-random-robots-reliable-ai-algorithm.html 研究背景 最大擴散強化學習(MaxDiff RL)是一種創新的強化學習方法,借鑒了統計力學中的擴散過程和最大熵原理。該方法在…

Hadoop的namenode啟動不起來

1、 排查原因 Initialization failed for Block pool (Datanode Uuid a5d441af-d074-4758-a3ff-e1563b709267) service to node1/192.168.88.101:8020. Exiting. java.io.IOException: Incompatible clusterIDs in /data/dn: namenode clusterID CID-674c5515-3fe1-4a9c-881d…

AIGC技術加持,英智法律智能體來了!

法律行業作為一個由大量文件積累的領域&#xff0c;非常適合由數據驅動的AI智能體。人工智能在法律領域的應用已經成為不可逆轉的趨勢。根據最高人民法院發布的《關于規范和加強人工智能司法應用的意見》&#xff0c;國家鼓勵在司法領域廣泛應用人工智能技術&#xff0c;以提高…

四端口千兆以太網交換機與 SFP 擴展功能

在數字化時代&#xff0c;網絡基礎設施的重要性日益凸顯&#xff0c;它是企業和個人取得成功的關鍵支撐。配備 SFP 插槽的 4 端口千兆以太網交換機提供了一種靈活且可擴展的網絡解決方案&#xff0c;能夠應對快速的數據傳輸、低延遲以及不斷增長的帶寬需求。本篇文章深入探討了…

IP地址配置

1.為虛擬機配置IP地址&#xff0c;網關&#xff0c;DNS 例如&#xff1a;手動給虛擬機配置IP地址為 192.168.5.50/24&#xff1b;網關地址為&#xff1a;192.168.5.2&#xff1b;DNS地址為&#xff1a;192.168.5.2 解題步驟如下&#xff1a; #配置IP地址 [rootlocalhost ~]#…

大廠都在加急招人的大模型LLM,到底怎么學?

大模型如何入坑&#xff1f; 想要完全了解大模型&#xff0c;你首先要了解市面上的LLM大模型現狀&#xff0c;學習Python語言、Prompt提示工程&#xff0c;然后深入理解Function Calling、RAG、LangChain 、Agents等 很多人不知道想要自學大模型&#xff0c;要按什么路線學&a…

【網絡安全】第4講 身份認證技術(筆記)

一、身份認證技術概述 1、身份認證 是網絡安全的第一道防線。是最基本的安全服務&#xff0c;其他的安全服務都依賴于它。在物聯網應用系統中&#xff0c;身份認證也是整個物聯網應用層信息安全體系的基礎。 2、基本身份認證技術 &#xff08;1&#xff09;雙方認證 是一種雙…

人員定位系統在監獄中的應用也同樣重要!

監獄管理應用人員定位系統怎么樣&#xff1f;新銳科創告訴你&#xff0c;人員定位系統在監獄中的應用也是很重要的&#xff0c;運用這種新型的定位系統&#xff0c;來起到管理監獄人員的作用。 人員定位系統 在監獄中&#xff0c;關押著大量的犯人&#xff0c;所以&#xff0c…

拓撲Transformer模型TopoFormer:革新藥物研發的智能鑰匙

在藥物研發的浩瀚征途中&#xff0c;每一步都充滿了挑戰與未知。從發現潛在的治療靶點&#xff0c;到篩選出有效的藥物分子&#xff0c;再到通過臨床試驗驗證其安全性和有效性&#xff0c;這一過程往往耗時漫長且成本高昂。然而&#xff0c;隨著人工智能技術的飛速發展&#xf…

昇思25天學習打卡營第15天|ResNet50圖像分類

學AI還能贏獎品&#xff1f;每天30分鐘&#xff0c;25天打通AI任督二脈 (qq.com) ResNet50圖像分類 圖像分類是最基礎的計算機視覺應用&#xff0c;屬于有監督學習類別&#xff0c;如給定一張圖像(貓、狗、飛機、汽車等等)&#xff0c;判斷圖像所屬的類別。本章將介紹使用ResN…

【JAVA入門】Day13 - 代碼塊

【JAVA入門】Day13 - 代碼塊 文章目錄 【JAVA入門】Day13 - 代碼塊一、局部代碼塊二、構造代碼塊三、靜態代碼塊 在 Java 中&#xff0c;兩個大括號 { } 中間的部分叫一個代碼塊&#xff0c;代碼塊又分為&#xff1a;局部代碼塊、構造代碼塊、靜態代碼塊三種。 一、局部代碼塊…

c++11新特性-3-自動類型推導

文章目錄 自動類型推導1.auto1.1 const修飾1.2 auto不能使用的場景1.3 auto應用場景 2.decltype1.1 基本語法 自動類型推導 1.auto 注意&#xff0c;auto必須進行初始化 auto i 10; //int類型auto k 3.14; //double類型auto db; //錯誤1.1 const修飾 當const修改指針或者…

C++:構造函數是什么東西

一、構造函數是什么 在C中&#xff0c;構造函數是一種特殊成員函數&#xff0c;它有一下幾個明顯的特征&#xff1a; 1、它自動在創建新對象時被調用。 2、其名稱與類名相同&#xff0c; 3、沒有返回類型&#xff0c; 4、通常沒有參數&#xff08;除了默認情況下的隱式thi…

跟《經濟學人》學英文:2024年06月01日這期 The side-effects of the TikTok tussle

The side-effects of the TikTok tussle tussle&#xff1a;美 [?t?s?l] 激烈扭打&#xff1b;爭奪 注意發音 side-effects&#xff1a;副作用&#xff1b;&#xff08;side-effect的復數&#xff09; As the app’s future hangs in the balance, the ramifications of …

MySQL的并發控制、事務、日志

目錄 一.并發控制 1.鎖機制 2.加鎖與釋放鎖 二.事務&#xff08;transactions&#xff09; 1.事物的概念 2.ACID特性 3.事務隔離級別 三.日志 1.事務日志 2.錯誤日志 3.通用日志 4.慢查詢日志 5.二進制日志 備份 一.并發控制 在 MySQL 中&#xff0c;并發控制是確…

都有哪些離線翻譯器軟件?沒網就用這4個

經歷完痛苦的期末考&#xff0c;可算是千盼萬盼等來了日思夜想的暑假&#xff01;趁著這大好時光&#xff0c;怎么能不來一場出國游呢~ 不知道有多少小伙伴和我一樣&#xff0c;出國玩最怕的就是語言不通&#xff0c;不管是吃飯還是游玩體驗感都會大受影響~好在多出國玩了幾趟…

ES6模塊化學習

1. 回顧&#xff1a;node.js 中如何實現模塊化 node.js 遵循了 CommonJS 的模塊化規范。其中&#xff1a; 導入其它模塊使用 require() 方法 模塊對外共享成員使用 module.exports 對象 模塊化的好處&#xff1a; 大家都遵守同樣的模塊化規范寫代碼&#xff…

Linux 時區文件格式【man 5 tzfile】

時區文件格式標準&#xff1a;https://datatracker.ietf.org/doc/html/rfc8536 1. NAME&#xff08;名&#xff09; tzfile - 時區文件。&#xff08;非文本文件&#xff09; 2. DESCRIPTION&#xff08;描述&#xff09; 本頁介紹被 tzset(3) 函數使用的時區文件的結構。這…

006 線程安全

文章目錄 臨界資源線程安全基本概念*何謂競態條件**何謂線程安全* 對象的安全局部基本類型變量局部的對象引用對象成員(成員變量) 不可變性 臨界資源 臨界資源是一次僅允許一個進程使用的共享資源。各進程采取互斥的方式&#xff0c;實現共享的資源稱作臨界資源。屬于臨界資源…

如何使用GPT進行科研:詳細指令指南

如何使用GPT進行科研&#xff1a;詳細指令指南 隨著GPT模型的流行&#xff0c;越來越多的科研人員開始利用這項技術來輔助科學研究&#xff0c;特別是在文本處理任務如論文翻譯、文本潤色和降低抄襲率方面。本文將提供詳細的指令&#xff0c;幫助科研人員有效地使用GPT進行科研…