国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

利用Python寫一個爬妹子的爬蟲

2020-02-15 21:42:31
字體:
供稿:網(wǎng)友

前言

最近學(xué)完P(guān)ython,寫了幾個爬蟲練練手,網(wǎng)上的教程有很多,但是有的已經(jīng)不能爬了,主要是網(wǎng)站經(jīng)常改,可是爬蟲還是有通用的思路的,即下載數(shù)據(jù)、解析數(shù)據(jù)、保存數(shù)據(jù)。下面一一來講。

1.下載數(shù)據(jù)

首先打開要爬的網(wǎng)站,分析URL,每打開一個網(wǎng)頁看URL有什么變化,有可能帶上上個網(wǎng)頁的某個數(shù)據(jù),例如xxID之類,那么我們就需要在上一個頁面分析HTML,找到對應(yīng)的數(shù)據(jù)。如果網(wǎng)頁源碼找不到,可能是ajax異步加載,去xhr里去找。

 

有的網(wǎng)站做了反爬的處理,可以添加User-Agent :判斷瀏覽器

self.user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'# 初始化 headersself.headers = {'User-Agent': self.user_agent}

如果不行,在Chrome上按F12分析請求頭、請求體,看需不需要添加別的信息,例如有的網(wǎng)址添加了referer:記住當(dāng)前網(wǎng)頁的來源,那么我們在請求的時候就可以帶上。按Ctrl + Shift + C,可以定位元素在HTML上的位置

動態(tài)網(wǎng)頁

有一些網(wǎng)頁是動態(tài)網(wǎng)頁,我們得到網(wǎng)頁的時候,數(shù)據(jù)還沒請求到呢,當(dāng)然什么都提取不出來,用Python 解決這個問題只有兩種途徑:直接從JavaScript 代碼里采集內(nèi)容,或者用Python 的第三方庫運(yùn)行JavaScript,直接采集你在瀏覽器里看到的頁面。

1.找請求,看返回的內(nèi)容,網(wǎng)頁的內(nèi)容可能就在這里。然后可以復(fù)制請求,復(fù)雜的網(wǎng)址中,有些亂七八糟的可以刪除,有意義的部分保留。切記刪除一小部分后先嘗試能不能打開網(wǎng)頁,如果成功再刪減,直到不能刪減。

2.Selenium:是一個強(qiáng)大的網(wǎng)絡(luò)數(shù)據(jù)采集工具(但是速度慢),其最初是為網(wǎng)站自動化測試而開發(fā)的。近幾年,它還被廣泛用于獲取精確的網(wǎng)站快照,因?yàn)樗鼈兛梢灾苯舆\(yùn)行在瀏覽器上。Selenium 庫是一個在WebDriver 上調(diào)用的API。

WebDriver 有點(diǎn)兒像可以加載網(wǎng)站的瀏覽器,但是它也可以像BeautifulSoup對象一樣用來查找頁面元素,與頁面上的元素進(jìn)行交互(發(fā)送文本、點(diǎn)擊等),以及執(zhí)行其他動作來運(yùn)行網(wǎng)絡(luò)爬蟲。

PhantomJS:是一個“無頭”(headless)瀏覽器。它會把網(wǎng)站加載到內(nèi)存并執(zhí)行頁面上的JavaScript,但是它不會向用戶展示網(wǎng)頁的圖形界面。把Selenium和PhantomJS 結(jié)合在一起,就可以運(yùn)行一個非常強(qiáng)大的網(wǎng)絡(luò)爬蟲了,可以處理cookie、JavaScript、header,以及任何你需要做的事情。

下載數(shù)據(jù)的模塊有urllib、urllib2及Requests

Requests相比其他倆個的話,支持HTTP連接保持和連接池,支持使用cookie保持會話,支持文件上傳,支持自 動確定響應(yīng)內(nèi)容的編碼,支持國際化的 URL 和 POST 數(shù)據(jù)自動編碼,而且api相對來說也簡單,但是requests直接使用不能異步調(diào)用,速度慢。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 奉贤区| 鸡西市| 福安市| 古田县| 阜宁县| 大悟县| 旬邑县| 鹤峰县| 彭水| 进贤县| 玉环县| 谢通门县| 岳西县| 凌云县| 纳雍县| 互助| 鲁甸县| 洛宁县| 汝城县| 陆河县| 司法| 朔州市| 定陶县| 高台县| 抚松县| 武强县| 个旧市| 苏州市| 江门市| 靖宇县| 庄河市| 通州市| 曲周县| 邢台县| 北辰区| 黄冈市| 边坝县| 阿巴嘎旗| 富蕴县| 临朐县| 澄城县|