天天看點

了解爬蟲原理

作業要求來自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851

1. 簡單說明爬蟲原理

  通過程式模拟浏覽器請求站點的行為,把站點傳回的HTML代碼/JSON資料/二進制資料(圖檔、視訊) 爬到本地,進而提取自己需要的資料,存放起來使用。

  

了解爬蟲原理

2. 了解爬蟲開發過程

1).簡要說明浏覽器工作原理;

  HTTP協定的作用原理包括四個步驟:  

  ①連接配接:Web浏覽器與Web伺服器建立連接配接,打開一個稱為socket(套接字)的虛拟檔案,此檔案的建立标志着連接配接建立成功。  

  ②請求:Web浏覽器通過socket向Web伺服器送出請求。HTTP的請求一般是GET或POST指令(POST用于FORM參數的傳遞)。GET指令的格式為:  GET 路徑/檔案名 HTTP/1.0  檔案名指出所通路的檔案,HTTP/1.0指出Web浏覽器使用的HTTP版本。  

  ③ 應答:Web浏覽器送出請求後,通過HTTP協定傳送給Web伺服器。Web伺服器接到後,進行事務處理,處理結果又通過HTTP傳回給Web浏覽器,進而在Web浏覽器上顯示出所請求的頁面。

  ④關閉連接配接:當應答結束後,Web浏覽器與Web伺服器必須斷開,以保證其它Web浏覽器能夠與Web伺服器建立連接配接。

2).使用 requests 庫抓取網站資料;

  requests.get(url) 擷取校園新聞首頁html代碼

import requests
#requests.get(url) 擷取校園新聞首頁html代碼
url="http://www.gzcc.cn/";
r=requests.get(url);
r.raise_for_status();
r.encoding=r.status_code;
print(r.text);      
了解爬蟲原理

3).了解網頁

  寫一個簡單的html檔案,包含多個标簽,類,id

<!DOCTYPE html>
<html>
    <head>
        <style type="text/css">
        div,span{
            font-size:20px;
            color: #0000FF;
        }
        .one{
            font-size:30px;
        }
        </style>
        <meta charset="UTF-8">
        <title></title>
        <script src="js/jquery-1.9.0.js"></script>
        <script src="js/jsseclector.js"></script>
        
    </head>
    <body>
        <p align="center"  class="one" id="一"><font size="5" >第一章:jQuery概述</font></p>
        <span id="1-1">1.1 初識jQuery
            <div>&nbsp;&nbsp;<a href="" id="1.1.1">--1.1.1 什麼是jQuery</a></div>
            <div>&nbsp;&nbsp;--1.1.2 jQuery的優勢</div>
            <div>&nbsp;&nbsp;--1.1.3 下載下傳jQuery腳本檔案和配置jQuery環境</div>
            <div>&nbsp;&nbsp;--1.1.4 第一個簡單的jQuery程式</div>
        </span>
        <span id="1-2">1.2 jQuery對象和DOM對象
            <div>&nbsp;&nbsp;<a href="">--2.1.1 DOM對象</a></div>
            <div>&nbsp;&nbsp;--2.1.2 jQuery對象</div>
        </span>
        <span id="1-3" >1.3 jQuery開發工具
            <div>&nbsp;&nbsp;<a href="">--3.1.1 使用Dreamweaver編輯jQuery程式</a></div>
            <div>&nbsp;&nbsp;--3.1.2 調試jQuery程式</div>
        </span>
    </body>
</html>      

4).使用 Beautiful Soup 解析網頁;

  通過BeautifulSoup(html_sample,'html.parser')把上述html檔案解析成DOM Tree

  select(選擇器)定位資料

 ①找出含有特定标簽的html元素:

print(soup.select("div"));      

   

了解爬蟲原理

 ②找出含有特定類名的html元素:

print(soup.select(".thirdthSize"));      
了解爬蟲原理

 ③找出含有特定id名的html元素:

print(soup.select("#oneBytwo"));      
了解爬蟲原理

3.提取一篇校園新聞的标題、釋出時間、釋出機關

import requests
import bs4
from bs4 import BeautifulSoup
#擷取網頁
url="http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html";
r=requests.get(url);
r.encoding=r.apparent_encoding;
text=r.text;
#print(text);
#解析網頁
soup=BeautifulSoup(text,"html.parser");
#新聞标題
title=soup.select(".show-title");
print(title);
#釋出時間與釋出機關
time=soup.select(".show-info");
print(time);      
了解爬蟲原理