@Author : By Runsen
@Author : 2020/5/16
我決定把去年寫(xiě)的關(guān)于Python爬蟲(chóng)文章整理一個(gè)專(zhuān)欄,垃圾的就直接刪除,將多篇博文整理成一篇,還補充一下其他的東西。
零基礎Python專(zhuān)欄,到底寫(xiě)了什么內容
希望大家都是Python大牛。
HTML被稱(chēng)為超文本標記語(yǔ)言,有著(zhù)一系列的標簽,這些標簽的組合可以顯示出文字,圖片,視頻等內容。我們平時(shí)訪(fǎng)問(wèn)的網(wǎng)頁(yè),就是通過(guò)html編寫(xiě)的。但是想要像我們看到的網(wǎng)頁(yè)那樣漂亮,我們需要為文檔添加css樣式。如果想要漂亮的動(dòng)畫(huà)效果,想要圖片能夠自動(dòng)播放,想要點(diǎn)擊出現一些反饋,就需要JavaScript來(lái)編寫(xiě)腳本啦。
css能夠對網(wǎng)頁(yè)中的各種元素(這種元素即我們提到的HTML標簽),我們可以通過(guò)它來(lái)設置背景顏色,設置元素的大小位置,設置字體的排版等等。
我們簡(jiǎn)稱(chēng)它為js,js的運行需要靠瀏覽器來(lái)運行。它是一種腳本語(yǔ)言,具有即時(shí)編譯的特點(diǎn)。js可以做一些動(dòng)態(tài)的操作,比如添加一個(gè)元素,改變元素的內容,改變css樣式。
下面我寫(xiě)了一些常用的HTML標簽
<body> <!--格式化內容標簽--> <br />換行 <hr />水平線(xiàn) <strong>加粗字體</strong> <del>刪除字體</del> <big>大號字體</big> <!--HTML5已經(jīng)刪除--> <small>小號字體</small> <sub>下標字體</sub> <sup>上標字體</sup> <ins>插入字體</ins> <em >斜體著(zhù)重</em> <i>斜體</i> 空格?版權符'引號>大于號<小于號 <!--圖片標簽,當圖片加載有問(wèn)題時(shí),顯示alt內容--> <img src='img/eyes.png' alt='圖像代替文字' title='鼠標懸停文字' width='40px' height='20px' /> <!--超鏈接標簽,target跳轉方式,_blank新的頁(yè)面,_slef當前頁(yè)面--> <a href='#' target='_blank'>內容</a> <!--錨鏈接使用方法:跳轉當前頁(yè)添加name或者id屬性,不同頁(yè)面跳轉需要添加地址--> <a name='marker'>A位置</a> <a href='#marker'>回到A位置</a> <a href='2.html#hhh'>回到新的頁(yè)面</a> <!--表格屬性:border邊框,cellpadding表格內容與邊框的距離,cellspacing單元格之間的距離 表格合并單元格:colspan合并行,rowspan合并列 --> <table border='1' cellpadding='0' cellspacing='0'> <tr > <td colspan='2'>1</td> </tr> <tr> <td rowspan='2'>3</td> <td>4</td> </tr> <tr> <td>6</td> </tr> </table> <!--無(wú)序列表,無(wú)數字--> <ul> <li>1</li> <li>2</li> </ul> <!--有序列表,帶數字--> <ol> <li>1</li> <li>2</li> </ol> <!--定義列表,自定義標題和內容--> <dl>標題1</dl> <dd>內容1</dd> <dd>內容2</dd> <dl>標題2</dl> <dd>內容1</dd> <dd>內容2</dd></body>想了解更多的看我下面這篇
一、前端必須掌握HTML的基礎知識
在 CSS 中,我們使用 CSS 選擇器來(lái)定位節點(diǎn)。例如,下圖中 div 節點(diǎn)的 id 為 asideProfile,那么就可以表示為 #asideProfile,其中 # 開(kāi)頭代表選擇 id,其后緊跟 id 的名稱(chēng)。
另外,如果我們想選擇 class 為aside-box的節點(diǎn),便可以使用 .aside-box,這里以點(diǎn)“.”開(kāi)頭代表選擇 class,其后緊跟 class 的名稱(chēng)。
互聯(lián)網(wǎng)就是一張大網(wǎng),而爬蟲(chóng)(即網(wǎng)絡(luò )爬蟲(chóng))便是在網(wǎng)上爬行的蜘蛛。如果把網(wǎng)的節點(diǎn)比作一個(gè)個(gè)網(wǎng)頁(yè),爬蟲(chóng)爬到這就相當于訪(fǎng)問(wèn)了該頁(yè)面,獲取了其信息??梢园压濣c(diǎn)間的連線(xiàn)比作網(wǎng)頁(yè)與網(wǎng)頁(yè)之間的鏈接關(guān)系。
爬蟲(chóng)首先要做的工作就是獲取網(wǎng)頁(yè),這里就是獲取網(wǎng)頁(yè)的源代碼。獲取網(wǎng)頁(yè)源代碼后,接下來(lái)就是分析網(wǎng)頁(yè)源代碼,從中提取我們想要的數據。
提取信息后,我們可以簡(jiǎn)單保存為 TXT 文本或 JSON 文本,也可以保存到數據庫,如 MySQL 和 MongoDB 等,還可保存至遠程服務(wù)器。
現在網(wǎng)頁(yè)越來(lái)越多地采用 Ajax、前端模塊化工具來(lái)構建,整個(gè)網(wǎng)頁(yè)可能都是由 JavaScript 渲染出來(lái)的,也就是說(shuō)原始的 HTML 代碼就是一個(gè)空殼。
網(wǎng)頁(yè)請求這個(gè)js文件,獲取到該文件后,便會(huì )執行其中的 JavaScript 代碼,而 JavaScript 則會(huì )改變 HTML 中的節點(diǎn),向其添加內容,最后得到完整的頁(yè)面。
對于,可以通過(guò)selenium或者找到Ajax的請求地址就可以解決。
爬取網(wǎng)站的時(shí)候,經(jīng)常會(huì )遇到各種各樣類(lèi)似加密的情形,比如:字體加密,構造參數加密, 想要抓取就必須要懂得找到對應的js文件,研究這些參數是怎么構造的,現在對于更多更全的信息都是通過(guò) App 來(lái)展示的。一些 App 在內部實(shí)現的時(shí)候對代理加了一些校驗,如繞過(guò)系統代理直接連接或者檢測到了使用了代理,直接拒絕連接。這需要考慮使用 Wireshark、Tcpdump 在更底層的協(xié)議上抓包。
之后將以前的文章全部整理,反復鞏固。
聯(lián)系客服