作業要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851
1. 簡單說明爬蟲原理
1、發起請求
使用http庫向目标站點發起請求,即發送一個Request
Request包含:請求頭、請求體等
Request子產品缺陷:不能執行JS 和CSS 代碼
2、擷取響應内容
如果伺服器能正常響應,則會得到一個Response
Response包含:html,json,圖檔,視訊等
3、解析内容
解析html資料:正規表達式(RE子產品),第三方解析庫如Beautifulsoup,pyquery等
解析json資料:json子產品
解析二進制資料:以wb的方式寫入檔案
4、儲存資料
資料庫(MySQL,Mongdb、Redis)
檔案
2. 了解爬蟲開發過程
1).簡要說明浏覽器工作原理;
輸入url,發送請求,通過網絡連接配接,等待伺服器相應傳回資料,浏覽器出現界面
2).使用 requests 庫抓取網站資料;
requests.get(url) 擷取校園新聞首頁html代碼
import requests
url='http://news.gzcc.cn/html/xiaoyuanxinwen/'
res=requests.get(url)
print(res.text)

3).了解網頁
寫一個簡單的html檔案,包含多個标簽,類,id
<body>
<div id="wrapper">
<header id="header">
<div class="content">
<div class="inner">
<h2>測試網站</h2>
<p>這是一個測試用的網站你可以跳轉到
<a href="https://www.baidu.com">百度</a> 看看<br>
當然也可以去 <a href="http://www.gzcc.cn">廣州商學院</a> 玩一玩</p>
</div>
</div>
<nav class="use-middle">
<ul>
<li><a id="intro">123</a></li>
<li><a id="work">3421</a></li>
<li><a id="about">w(?Д?)w</a></li>
<li><a id="contact">444444</a></li>
</ul>
</nav>
</header>
</div>
</body>
4).使用 Beautiful Soup 解析網頁;
通過BeautifulSoup(html_sample,'html.parser')把上述html檔案解析成DOM Tree
select(選擇器)定位資料
找出含有特定标簽的html元素
找出含有特定類名的html元素
找出含有特定id名的html元素
from bs4 import BeautifulSoup
simple = open(r'simpleHTML.html','r',encoding='utf-8')
simpleR = simple.read()
soup=BeautifulSoup(simpleR,'html.parser')
h=soup.select('h1')
id=soup.select('#from1')
cls=soup.select('.AD')
print(h,id,cls)
3.提取一篇校園新聞的标題、釋出時間、釋出機關
url = 'https://www.bilibili.com/read/cv2335645?from=category_2'
import requests
from bs4 import BeautifulSoup
url ="https://www.bilibili.com/read/cv2335645?from=category_2"
res=requests.get(url)
type(res)
res.encoding="utf-8"
soup1=BeautifulSoup(res.text,'html.parser')
time=soup1.select('.create-time')
au=soup1.select('.author-name')
title=soup1.select('.title')
print(time,'\n',au,'\n' 'title')