作業要求來自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851
1. 簡單說明爬蟲原理
通過程式模拟浏覽器請求站點的行為,把站點傳回的HTML代碼/JSON資料/二進制資料(圖檔、視訊) 爬到本地,進而提取自己需要的資料,存放起來使用。
2. 了解爬蟲開發過程
1).簡要說明浏覽器工作原理;
浏覽器工作原理的實質就是實作http協定的通訊,就是向伺服器送出請求,在浏覽器視窗中展示想要通路的網絡資源。資源的位置由使用者使用 URI(統一資源标示符)指定。
2).使用 requests 庫抓取網站資料;
requests.get(url) 擷取校園新聞首頁html代碼
具體代碼如下:

import requests
from bs4 import BeautifulSoup
url='http://news.gzcc.cn/html/xiaoyuanxinwen/'
#網絡資源擷取
res=requests.get(url)
print(res.text)
擷取html代碼
結果如下:
3).了解網頁
寫一個簡單的html檔案,包含多個标簽,類,id

<body>
<div id="wrapper">
<header id="header">
<div class="content">
<div class="inner">
<h1>一 個 網 站</h1>
<p>這是一個測試用的網站你可以跳轉到 <a href="https://www.baidu.com">百度</a> 看看<br>
當然也可以去 <a href="https://www.4399.com">4399小遊戲</a> 玩一玩</p>
</div>
</div>
<nav class="use-middle">
<ul>
<li><a id="intro">Intro</a></li>
<li><a id="work">Work</a></li>
<li><a id="about">About</a></li>
<li><a id="contact">Contact</a></li>
</ul>
</nav>
</header>
</div>
</body>
簡單html測試
大概效果如下:
4).使用 Beautiful Soup 解析網頁;
通過BeautifulSoup(html_sample,'html.parser')把上述html檔案解析成DOM Tree
select(選擇器)定位資料
找出含有特定标簽的html元素
找出含有特定類名的html元素
找出含有特定id名的html元素

import requests
from bs4 import BeautifulSoup
with open(r'simpleHTML.html','r',encoding='utf-8') as f:
text=f.read()
soup=BeautifulSoup(text,'html.parser')
#特定标簽的html元素
a=soup.select('li')[2].text
# 特定類名的html元素
b=soup.select('.inner')[0].text
# 特定id名的html元素
c=soup.select('#intro')[0].text
print(a,b,c)
解析網頁
結果如下:
3.提取一篇校園新聞的标題、釋出時間、釋出機關
具體代碼如下:

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'
# 解析成DOM Tree
soup=BeautifulSoup(res.text,'html.parser')
# 提取詳細資訊
t = soup.select('.show-title')[0].text
for news in soup.select('div'):
if len(news.select('.show-title'))>0:
t=news.select('.show-title')[0].text
b=news.select('.show-info')[0].text
print(t,b)
break
提取新聞
結果如下: