改作業要求來源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851
一、簡單說明爬蟲原理
如果我們把網際網路比作一張大的蜘蛛網,資料便是存放于蜘蛛網的各個節點,而爬蟲就是一隻小蜘蛛,沿着網絡抓取自己的獵物(資料)爬蟲指的是:向網站發起請求,擷取資源後分析并提取有用資料的程式;從技術層面來說就是 通過程式模拟浏覽器請求站點的行為,把站點傳回的HTML代碼/JSON資料/二進制資料(圖檔、視訊) 爬到本地,進而提取自己需要的資料,存放起來使用;
基本流程大緻是:
發送請求-----》擷取響應内容-----》解析内容-----》儲存資料
二、了解爬蟲開發過程
1、簡要說明浏覽器工作原理
浏覽器工作原理的實質就是實作http協定的通訊,大緻分為三個階段:
連接配接,伺服器通過一個ServerSocket類對象對某端口進行監聽,監聽都之後進行連接配接,打開一個socket虛拟檔案。
請求,建立與監理socket連接配接相關的流對象後,浏覽器擷取請求,為get請求,則從請求資訊中擷取所通路的html檔案名,向伺服器發送請求。
響應,伺服器收到請求後,搜尋相關的目錄檔案,若不存在,傳回錯誤的資訊。若存在,則讀取html檔案,進行加http頭等處理響應給浏覽器,浏覽器解析html檔案,若其中還包含圖檔,視訊等資源,則浏覽器再次通路web伺服器,擷取圖檔視訊等,并對其進行組裝顯示給使用者。
2、使用 requests 庫抓取網站資料
import requests
url='http://news.gzcc.cn/html/xiaoyuanxinwen'
res = requests.get(url)
res.encoding=('utf-8')
print(res.text)
結果如下圖:

3、使用 requests 庫抓取網站資料
了解網頁并且寫一個簡單的html檔案,包含多個标簽,類,id:
<html>
<head>
<meta charset="utf-8">
<body>
<h1 id="title">标題</h1>
<p>點選一下</p>
<button type="button" id="button">按鈕</button>
</body>
</head>
</html>
4、使用 Beautiful Soup 解析網頁
通過BeautifulSoup(html_sample,'html.parser')把上述html檔案解析成DOM Tree
select(選擇器)定位資料
1.找出含有特定标簽的html元素
soup=BeautifulSoup(res.text,'html.parser')
soup.select('li')
結果如圖:
2.找出含有特定類名的html元素
soup=BeautifulSoup(res.text,'html.parser')
for i in soup.select('.news-list-title'):
print(i)
3.找出含有特定id名的html元素
soup=BeautifulSoup(res.text,'html.parser')
print(soup.select('#menu')[0].text)
結果如圖:
5、提取一篇校園新聞的标題、釋出時間、釋出機關
import requests
from bs4 import BeautifulSoup
url='http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html'
res = requests.get(url)
res.encoding=('utf-8')
soup=BeautifulSoup(res.text,'html.parser')
title=soup.select('.show-title')
time=soup.select('.show-info')
print(title,'\n',time)
結果如圖: