做業要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851html
1. 簡單說明爬蟲原理正則表達式
(1)首先選取一部分精心挑選的種子URL;數據庫
(2)將這些URL放入待抓取URL隊列;json
(3)從待抓取URL隊列中取出待抓取在URL,解析DNS,而且獲得主機的ip,並將URL對應的網頁下載下來,存儲進已下載網頁庫中。此外,將這些URL放進已抓取URL隊列。瀏覽器
(4)分析已抓取URL隊列中的URL,分析其中的其餘URL,而且將URL放入待抓取URL隊列,從而進入下一個循環。服務器
2. 理解爬蟲開發過程 網絡
(1)發起請求網站
使用http庫向目標站點發起請求,即發送一個Requesturl
Request包含:請求頭、請求體等 spa
Request模塊缺陷:不能執行JS 和CSS 代碼
(2)獲取響應內容
若是服務器能正常響應,則會獲得一個Response
Response包含:html,json,圖片,視頻等
(3)解析內容
解析html數據:正則表達式(RE模塊),第三方解析庫如Beautifulsoup,pyquery等
解析json數據:json模塊
解析二進制數據:以wb的方式寫入文件
(4)保存數據
數據庫(MySQL,Mongdb、Redis)
文件
1).簡要說明瀏覽器工做原理;
瀏覽器內核分紅兩部分:渲染引擎和js引擎,因爲js引擎愈來愈獨立,內核就傾向於只指渲染引擎,負責請求網絡頁面資源加以解析排版並呈現給用戶
默認狀況下,渲染引擎能夠顯示html、xml文檔及圖片,它也能夠藉助插件顯示其餘類型數據,例如使用PDF閱讀器插件,能夠顯示PDF格式
2).使用 requests 庫抓取網站數據;
requests.get(url) 獲取校園新聞首頁html代碼
import requests from bs4 import BeautifulSoup url='http://news.gzcc.cn/html/xiaoyuanxinwen' res = requests.get(url) res.encoding = 'utf-8' res.text
3).瞭解網頁
寫一個簡單的html文件,包含多個標籤,類,id
<html> <head> <title>一個 HTML 頁面</title> </head> <body> <div class='nav'> <p id='header'>header</p> <p id='body'>body</p> <p id='end'>end</p> </div> <div class='nav'> <p id='header2'>header2</p> <p id='body2'>body2</p> <p id='end2'>end2</p> </div> </body> </html>
4).使用 Beautiful Soup 解析網頁;
經過BeautifulSoup(html_sample,'html.parser')把上述html文件解析成DOM Tree
select(選擇器)定位數據
soup = BeautifulSoup(res.text,'html.parser')
找出含有特定標籤的html元素
找出含有特定類名的html元素
找出含有特定id名的html元素
3.提取一篇校園新聞的標題、發佈時間、發佈單位
url = 'http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html'
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' res.text
soup = BeautifulSoup(res.text,'html.parser')
title = soup.select('.show-title')[0].text
info = soup.select('.show-info')[0].text list = info.split() del list[-1] for i in list: print(i)