一.爬蟲簡單介紹
爬蟲是什么?
爬蟲是首先使用模擬瀏覽器訪問網站獲取數據,然后通過解析過濾獲得有價值的信息,最后保存到到自己庫中的程序.
爬蟲程序包括哪些模塊?
python中的爬蟲程序主要包括,requests請求庫,seleium請求庫,xpath和BeautSoup4解析庫,
爬取校花網需要使用到哪些模塊?
校花網結構簡單,而且沒有任何防爬手段,所在只需要使用requests就可以完成了=.=.
二.具體操作
1.獲得網頁
網站地址:http://www.xiaohuar.com/
我要爬取的視頻網頁主頁為http://www.xiaohuar.com/list-3-0.html
下一頁為http://www.xiaohuar.com/list-3-1.html
總共有五頁所以,拼接生成五頁主頁.
url = 'http://www.xiaohuar.com/list-3-{}.html' for line in range(5): index_url = url.format(line)
2.主頁解析
主頁中跳轉到詳情頁的連接在這里
#使用正則可以獲得詳情頁網址. re.findall('<div class="items".*?<a href="(.*?)"',index_res,re.S)
3.詳情頁解析
詳情頁中的視頻連接在這個位置
#正則匹配獲得視頻的網址 video_url = re.findall('<source src="(.*?)">',detail_page,re.S) # 順便獲得視頻的名字 video_name = re.findall('<h1>(.*?)</h1>',detail_page,re.S)
4.保存視頻
將上獲得的網址與視頻名傳入函數,打開網址將內容保存到video中 "視頻名字".mp4的文件中,
def save_video(video_dic): try: video_url=video_dic.get('url') video_name=video_dic.get('name') video = requests.get(video_url) with open(r'video/%s.mp4'%video_name,'wb') as f: f.write(video.content) f.flush() except Exception: pass
5.全部執行代碼
import requests import re import uuid #一.獲取網頁 url='http://www.xiaohuar.com/' def get_page(url): index_res = requests.get(url) return index_res.text #二.解析網站 # 解析主頁 def parse_index(index_res): detail_url_list = re.findall('<div class="items".*?<a href="(.*?)"',index_res,re.S) return detail_url_list #解析詳情頁 def parse_detail(detail_page): video_url = re.findall('<source src="(.*?)">',detail_page,re.S) video_name = re.findall('<h1>(.*?)</h1>',detail_page,re.S) print(video_url) print(video_name) if video_url: video_url=video_url[0] if video_name: video_name=video_name[0] return {'url': video_url, 'name': video_name} else: video_name=uuid.uuid4() return {'url':video_url,'name':video_name} #三.保存視頻 def save_video(video_dic): try: video_url=video_dic.get('url') video_name=video_dic.get('name') video = requests.get(video_url) with open(r'video/%s.mp4'%video_name,'wb') as f: f.write(video.content) f.flush() except Exception: pass if __name__=='__main__': url = 'http://www.xiaohuar.com/list-3-{}.html' for line in range(5): index_url = url.format(line) print(index_url) # 獲得主頁文本 index_res = get_page(index_url) # 解析主頁,獲得詳情頁網址列表 detail_url_list = parse_index(index_res) print(detail_url_list) for detail_url in detail_url_list: detail_page = get_page(detail_url) video_dic=parse_detail(detail_page) save_video(video_dic)