一,爬蟲是什麼?html
爬蟲就是獲取網絡上各類資源,數據的一種工具。具體的能夠自行百度。瀏覽器
二,如何寫簡單爬蟲網絡
1,獲取網頁內容app
能夠經過 Python(3.x) 自帶的 urllib,來實現網頁內容的下載。實現起來很簡單工具
import urllib.request url="http://www.baidu.com" response=urllib.request.urlopen(url) html_content=response.read()
還可使用三方庫 requests ,實現起來也很是方便,在使用以前固然你須要先安裝這個庫:pip install requests 便可(Python 3之後的pip很是好使)學習
import requests html_content=requests.get(url).text
2, 解析網頁內容url
獲取的網頁內容html_content,其實就是html代碼,咱們須要對其進行解析,獲取咱們所須要的內容。spa
解析網頁的方法有不少,這裏我介紹的是BeautifullSoup,因爲這是一個三方庫,在使用前 仍是要先安裝 :pip install bs4code
form bs4 imort BeautifullSoup soup= BeautifullSoup(html_content, "html.parser")
更多使用方法請參考官方文檔:http://beautifulsoup.readthedocs.io/zh_CN/latest/orm
三,實例分析
弄懂爬蟲原理的最好辦法,就是多分析一些實例,爬蟲變幻無窮,萬變不離其宗。廢話少說上乾貨。
===================================我是分割線===================================================
需求:爬取小米應用商店的TOP n 應用
經過瀏覽器打開小米應用商店排行棒頁面,F12審查元素
#coding=utf-8 import requests
import re from bs4 import BeautifullSoup def parser_apks(self, count=0): '''小米應用市場''' _root_url="http://app.mi.com" #應用市場主頁網址 res_parser={} page_num=1 #設置爬取的頁面,從第一頁開始爬取,第一頁爬完爬取第二頁,以此類推 while count:
#獲取排行榜頁面的網頁內容 wbdata = requests.get("http://app.mi.com/topList?page="+str(page_num)).text print("開始爬取第"+str(page_num)+"頁")
#解析頁面內容獲取 應用下載的 界面鏈接 soup=BeautifulSoup(wbdata,"html.parser") links=soup.body.contents[3].find_all("a",href=re.compile("/details?"), class_ ="", alt="") #BeautifullSoup的具體用法請百度一下吧。。。 for link in links: detail_link=urllib.parse.urljoin(_root_url, str(link["href"])) package_name=detail_link.split("=")[1]
#在下載頁面中獲取 apk下載的地址 download_page=requests.get(detail_link).text soup1=BeautifulSoup(download_page,"html.parser") download_link=soup1.find(class_="download")["href"] download_url=urllib.parse.urljoin(_root_url, str(download_link))
#解析後會有重複的結果,下面經過判斷去重 if download_url not in res_parser.values(): res_parser[package_name]=download_url count=count-1 if count==0: break if count >0: page_num=page_num+1 print("爬取apk數量爲: "+str(len(res_parser))) return res_parser
def craw_apks(self, count=1, save_path="d:\\apk\\"): res_dic=parser_apks(count) for apk in res_dic.keys(): print("正在下載應用: "+apk) urllib.request.urlretrieve(res_dic[apk],save_path+apk+".apk") print("下載完成")
if __name__=="__main__":
craw_apks(10)
運行結果:
開始爬取第1頁 爬取apk數量爲: 10 正在下載應用: com.tencent.tmgp.sgame
下載完成
.
.
.
以上就是簡單爬蟲的內容,其實爬蟲的實現仍是很複雜的,不一樣的網頁有不一樣的解析方式,還須要深刻學習。。。