總結爬蟲流程:爬取--->解析--->存儲
什么是爬蟲拾徙?請求網(wǎng)站并提取數(shù)據(jù)的自動化程序就叫做爬蟲哑芹。
爬蟲的主要目的?是將互聯(lián)網(wǎng)上的網(wǎng)頁下載到本地形成一個互聯(lián)網(wǎng)內容的鏡像備份疯溺。
爬蟲的基本流程瞳腌?
1.用戶獲取網(wǎng)絡數(shù)據(jù)的方式:
1:瀏覽器提交請求--->下載網(wǎng)頁代碼--->解析成頁面
2:模擬瀏覽器發(fā)送請求(獲取網(wǎng)頁代碼)->提取有用的數(shù)據(jù)->存放于數(shù)據(jù)庫或文件中
爬蟲要做的就是方式2绞铃;
發(fā)起請求
使用http庫向目標站點發(fā)起請求,即發(fā)送一個Request
Request包含:請求頭嫂侍、請求體等
Request模塊缺陷:不能執(zhí)行JS 和CSS 代碼
2儿捧、獲取響應內容
如果服務器能正常響應,則會得到一個Response
Response包含:html吵冒,json,圖片西剥,視頻等
3痹栖、解析內容
解析html數(shù)據(jù):正則表達式(RE模塊),第三方解析庫如Beautifulsoup瞭空,pyquery等
解析json數(shù)據(jù):json模塊
解析二進制數(shù)據(jù):以wb的方式寫入文件
4揪阿、保存數(shù)據(jù)
數(shù)據(jù)庫(MySQL,Mongdb咆畏、Redis)
文件
Request:用戶將自己的信息通過瀏覽器(socket client)發(fā)送給服務器(socket server)
Response:服務器接收請求南捂,分析用戶發(fā)來的請求信息,然后返回數(shù)據(jù)(返回的數(shù)據(jù)中可能包含其他鏈接旧找,如:圖片溺健,js,css等)
request
1钮蛛、請求方式:常見的請求方式:GET / POST
2鞭缭、請求的URL
url全球統(tǒng)一資源定位符,用來定義互聯(lián)網(wǎng)上一個唯一的資源 例如:一張圖片魏颓、一個文件岭辣、一段視頻都可以用url唯一確定
url編碼
3、請求頭
User-agent:請求頭中如果沒有user-agent客戶端配置甸饱,服務端可能將你當做一個非法用戶host沦童;
cookies:cookie用來保存登錄信息
一般做爬蟲都會加上請求頭,模擬用戶請求
請求頭需要注意的參數(shù):
1.Referrer:訪問源至哪里來(一些大型網(wǎng)站,會通過Referrer 做防盜鏈策略叹话;所有爬蟲也要注意模擬)
User-Agent:訪問的瀏覽器(要加上否則會被當成爬蟲程序)
cookie:請求頭注意攜帶
xpath
動態(tài)加載:使用json串轉換
靜態(tài)頁面:使用正則偷遗,xpath..
結構化數(shù)據(jù):先有結構,在有數(shù)據(jù) json path
非結構化數(shù)據(jù):先有數(shù)據(jù)驼壶,再有結構 正則鹦肿,xpath
什么是xpath: 是一門在 XML 文檔中查找信息的語言,可用來在 XML 文檔中對元素和屬性進行遍歷辅柴。
什么是xml:是傳輸數(shù)據(jù)而并非顯示數(shù)據(jù)
xpath 語法的目的箩溃,找到節(jié)點瞭吃,提取信息
xpath 語法
使用xpath 語法提取數(shù)據(jù)
什么是xpath: 是一門在 XML 文檔中提取信息數(shù)據(jù)的語言,可以用來在xml文檔中對元素(標簽)的屬性進行遍歷
xml:是一個可擴展的標記語言涣旨,語法和html相像歪架,里面的節(jié)點可以自己定義,被設計的目的用來進行數(shù)據(jù)的傳輸和保存
安裝lxml pip3 install lxml
以起點中文網(wǎng)為例
notename:節(jié)點:查找出html中標簽名為notname的節(jié)點
/ 表示從根節(jié)點的地方開始查找霹陡,(相對性的)
// 表示從任意位置匹配出你想要的節(jié)點
. 表示選取當前節(jié)點
.. 表示選取當前節(jié)點的父節(jié)點
@ 表示選擇屬性
text() 表示取標簽文本內容
notename[1]:表示標簽名為的一個的節(jié)點
notename[last()]:表示取最后一個
notename[last()-1]:表示取倒數(shù)第二個