爬虫速成(一):前言
文檔配套視頻
https://www.bilibili.com/video/BV1Pr4y1w7rW/
什么是爬蟲
網(wǎng)絡(luò)爬蟲(又稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。
當(dāng)然,上面的是百度百科的解釋。大家肯定在學(xué)習(xí)python的時候聽說過這個名詞!(或者是現(xiàn)在才聽到?)到了21世紀(jì),經(jīng)過爬蟲工作人員與反爬蟲工作人員的不斷交火,爬蟲技術(shù)已經(jīng)十分成熟,python中有許許多多的庫,例如:urllib、requests、webdriver,也有許多框架,例如:scrapy、pyspider(中國人寫的哦!),爬蟲的實際就是模擬瀏覽器獲取網(wǎng)絡(luò)資源 ,就看你模擬的像不像了,不像就完蛋蛋嘍。
當(dāng)我們需要大量獲取網(wǎng)絡(luò)資源或者是為了自己的便利來獲取一些資源的時候,我們就可以使用爬蟲,
比如說:下載書籍、音樂、視頻、調(diào)用API、或者是根據(jù)自己的需求來設(shè)計
爬蟲的分類
最常見的就是爬取網(wǎng)頁資源,因為好訪問、好解析嘛,但其實也可以爬取手機app、電腦app資源(以后會做介紹)
根據(jù)爬取資源類型分類:
- 二進(jìn)制數(shù)據(jù):視頻、音頻、圖片等
- 文本數(shù)據(jù)
根據(jù)被爬取的設(shè)備分類:
- 網(wǎng)頁爬蟲
- 手機app爬蟲
- 電腦應(yīng)用爬蟲
- 小程序爬蟲
- …等等
根據(jù)爬蟲使用分類:
- 程序爬蟲:python、java、R
- 應(yīng)用爬蟲:集搜客、八爪魚、火車頭采集器、后羿采集器等等(阿里公司正在開發(fā)自己的爬蟲應(yīng)用,等以后出來了會和大家分享)
為什么學(xué)爬蟲
滿足自我需求
首先呢,學(xué)了爬蟲我們可以很方便的滿足自己的需求,也許當(dāng)前不需要,但是等你需要的時候你會啊,哪有那么多需求是你學(xué)完就恰好直接能用得上的。
其實這個,需要你保持一顆好奇心
搞錢
當(dāng)然是!!!有錢途 啊。
市場有需求嗎?you啊!我們有技術(shù)嗎?馬上就快有了啊!!!有市場,有技術(shù),那還會有什么?you錢啊,我們可以make money啦!
當(dāng)我們學(xué)了最基本的爬蟲,了解了爬蟲的基本步驟,我們就可以去接單了啊!而且爬蟲程序都是100起步的哦。
其他
撩妹??
因為牛批?
說出去帥!!!
爬蟲的基本步驟
對于爬蟲大概分為三步:
- 數(shù)據(jù)采集
- 數(shù)據(jù)清洗
- 數(shù)據(jù)存儲
本專欄(爬蟲速成)會針對這三部分介紹又好用、又簡單的第三方庫或?qū)嵱霉ぞ?#xff0c;后期會在這個博客專欄添加一些拓展、進(jìn)階知識,大家有什么需要也可以和我留言,期待共同進(jìn)步!
其實在我們拿到數(shù)據(jù)之后,還可以對數(shù)據(jù)可視化,但是可視化是python單獨的一個領(lǐng)域,在此不做過多介紹,大家可以參考我的matplotlib教程(點擊跳轉(zhuǎn)),做一些基本的圖形哦!(或者參考其他博主的也可以…)
對python要求高嗎?
其實我們剛開始寫的時候,都是面向過程的(沒聽過這個詞就當(dāng)沒看到哈),語法很簡單,等到后面進(jìn)階,我們會學(xué)習(xí)許多知識。
關(guān)于爬蟲的學(xué)習(xí),一句話,入門簡單,學(xué)精很難!
對于不同階段,在這里寫一下最基本的要求。
入門階段:
- 會使用鼠標(biāo)、鍵盤,并且會創(chuàng)建python腳本文件
- 會使用python的for循環(huán)、會使用if語句、print
- 會使用瀏覽器,能使用百度搜索問題
初級階段:
- 會調(diào)用函數(shù)、編寫函數(shù)
- 掌握requests、xpath、webdriver、正則最基本的用法
- 可以提取json數(shù)據(jù)
- 會將數(shù)據(jù)存入到Excel表格、csv文件中
- 會使用os庫創(chuàng)建文件夾
中級階段:
- 了解python多線程,會寫多線程爬蟲
- 會使用python操作數(shù)據(jù)庫,MySQL、MongoDB、SQLite最起碼選一個吧?
進(jìn)階階段:
- 了解Fiddler、Proxifier
- 可以對小程序、手機應(yīng)用進(jìn)行爬取
- 可以破解驗證碼
- 會進(jìn)行js解密
- 可以判斷網(wǎng)站加密方式并制定解決方案
- 寫一個淘寶爬蟲
一些爬蟲小程序
官方說我違規(guī),我就刪了幾個
爬取李清照詩集
#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)爬取疫情數(shù)據(jù)
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'] # 疫情地區(qū)today_add=i['today']['confirm'] # 新增nowConfirm=i['total']['nowConfirm'] # 現(xiàn)有confirm = i['total']['confirm'] # 累計heal = i['total']['heal'] # 治愈dead = i['total']['dead'] # 死亡print((name,today_add,nowConfirm,confirm,heal,dead)) import requests import re # 正則表達(dá)式 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'] # 疫情地區(qū)today_add=i['confirmedRelative'] # 新增nowConfirm=i['curConfirm'] # 現(xiàn)有confirm = i['confirmed'] # 累計heal = i['crued'] # 治愈dead = i['died'] # 死亡print((name,today_add,nowConfirm,confirm,heal,dead))GoGoGo
好啦,現(xiàn)在我們開始吧!
爬蟲速成(二):數(shù)據(jù)獲取
爬蟲速成(三):數(shù)據(jù)提取
爬蟲速成(四):數(shù)據(jù)存儲
總結(jié)
以上是生活随笔為你收集整理的爬虫速成(一):前言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker | 基于docker安装R
- 下一篇: BAT批处理批量修改文件后缀名