爬虫速成(一):前言
文檔配套視頻
https://www.bilibili.com/video/BV1Pr4y1w7rW/
什么是爬蟲
網絡爬蟲(又稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。
當然,上面的是百度百科的解釋。大家肯定在學習python的時候聽說過這個名詞!(或者是現在才聽到?)到了21世紀,經過爬蟲工作人員與反爬蟲工作人員的不斷交火,爬蟲技術已經十分成熟,python中有許許多多的庫,例如:urllib、requests、webdriver,也有許多框架,例如:scrapy、pyspider(中國人寫的哦!),爬蟲的實際就是模擬瀏覽器獲取網絡資源 ,就看你模擬的像不像了,不像就完蛋蛋嘍。
當我們需要大量獲取網絡資源或者是為了自己的便利來獲取一些資源的時候,我們就可以使用爬蟲,
比如說:下載書籍、音樂、視頻、調用API、或者是根據自己的需求來設計
爬蟲的分類
最常見的就是爬取網頁資源,因為好訪問、好解析嘛,但其實也可以爬取手機app、電腦app資源(以后會做介紹)
根據爬取資源類型分類:
- 二進制數據:視頻、音頻、圖片等
- 文本數據
根據被爬取的設備分類:
- 網頁爬蟲
- 手機app爬蟲
- 電腦應用爬蟲
- 小程序爬蟲
- …等等
根據爬蟲使用分類:
- 程序爬蟲:python、java、R
- 應用爬蟲:集搜客、八爪魚、火車頭采集器、后羿采集器等等(阿里公司正在開發自己的爬蟲應用,等以后出來了會和大家分享)
為什么學爬蟲
滿足自我需求
首先呢,學了爬蟲我們可以很方便的滿足自己的需求,也許當前不需要,但是等你需要的時候你會啊,哪有那么多需求是你學完就恰好直接能用得上的。
其實這個,需要你保持一顆好奇心
搞錢
當然是!!!有錢途 啊。
市場有需求嗎?you啊!我們有技術嗎?馬上就快有了啊!!!有市場,有技術,那還會有什么?you錢啊,我們可以make money啦!
當我們學了最基本的爬蟲,了解了爬蟲的基本步驟,我們就可以去接單了啊!而且爬蟲程序都是100起步的哦。
其他
撩妹??
因為牛批?
說出去帥!!!
爬蟲的基本步驟
對于爬蟲大概分為三步:
- 數據采集
- 數據清洗
- 數據存儲
本專欄(爬蟲速成)會針對這三部分介紹又好用、又簡單的第三方庫或實用工具,后期會在這個博客專欄添加一些拓展、進階知識,大家有什么需要也可以和我留言,期待共同進步!
其實在我們拿到數據之后,還可以對數據可視化,但是可視化是python單獨的一個領域,在此不做過多介紹,大家可以參考我的matplotlib教程(點擊跳轉),做一些基本的圖形哦!(或者參考其他博主的也可以…)
對python要求高嗎?
其實我們剛開始寫的時候,都是面向過程的(沒聽過這個詞就當沒看到哈),語法很簡單,等到后面進階,我們會學習許多知識。
關于爬蟲的學習,一句話,入門簡單,學精很難!
對于不同階段,在這里寫一下最基本的要求。
入門階段:
- 會使用鼠標、鍵盤,并且會創建python腳本文件
- 會使用python的for循環、會使用if語句、print
- 會使用瀏覽器,能使用百度搜索問題
初級階段:
- 會調用函數、編寫函數
- 掌握requests、xpath、webdriver、正則最基本的用法
- 可以提取json數據
- 會將數據存入到Excel表格、csv文件中
- 會使用os庫創建文件夾
中級階段:
- 了解python多線程,會寫多線程爬蟲
- 會使用python操作數據庫,MySQL、MongoDB、SQLite最起碼選一個吧?
進階階段:
- 了解Fiddler、Proxifier
- 可以對小程序、手機應用進行爬取
- 可以破解驗證碼
- 會進行js解密
- 可以判斷網站加密方式并制定解決方案
- 寫一個淘寶爬蟲
一些爬蟲小程序
官方說我違規,我就刪了幾個
爬取李清照詩集
#110首 import requests import re count=0 with open('李清照詩詞集.md','w',encoding='utf-8') as fp:for i in range(1,12):print('正在爬取第%d頁'%i)url='https://so.gushiwen.org/authors/authorvsw.aspx?page='+str(i)+'&id=9cb3b7c0e4a0'response=requests.get(url).text# print(response)poem_title_list=re.findall('<textarea style=" background.*id=.*">?(.*》?)https',response)[:-1]count+=len(poem_title_list)for j in poem_title_list:data=j.split('——宋代·李清照')data.insert(1,'\n')data.reverse()data.insert(0,'# ')data.append('\n\n')fp.writelines(data) print('共%d首詩詞'%count)爬取疫情數據
import requests import jsonurl='https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=jQuery341027523371041305267_1592721097964&_=1592721097965' response=requests.get(url).text first_index=response.find('(') response=response[first_index+1:-1] data=json.loads(response)['data'] data=json.loads(data)['areaTree'][0]['children'] # 得到一個列表,里面是我們想要的信息 for i in data:name=i['name'] # 疫情地區today_add=i['today']['confirm'] # 新增nowConfirm=i['total']['nowConfirm'] # 現有confirm = i['total']['confirm'] # 累計heal = i['total']['heal'] # 治愈dead = i['total']['dead'] # 死亡print((name,today_add,nowConfirm,confirm,heal,dead)) import requests import re # 正則表達式 import json url='https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=singlemessage'response=requests.get(url).text data_demo=re.findall('<script(.*?)</script>',response)[6] # 提取信息 data=re.findall('({"confirmed":".*?","died":".*?","crued":".*?","relativeTime".*?),"subList"',data_demo)[:34] data=[i+'}' for i in data] for i in data:i=json.loads(i)name=i['area'] # 疫情地區today_add=i['confirmedRelative'] # 新增nowConfirm=i['curConfirm'] # 現有confirm = i['confirmed'] # 累計heal = i['crued'] # 治愈dead = i['died'] # 死亡print((name,today_add,nowConfirm,confirm,heal,dead))GoGoGo
好啦,現在我們開始吧!
爬蟲速成(二):數據獲取
爬蟲速成(三):數據提取
爬蟲速成(四):數據存儲
總結
以上是生活随笔為你收集整理的爬虫速成(一):前言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker | 基于docker安装R
- 下一篇: BAT批处理批量修改文件后缀名