一.爬虫简单介绍
爬虫是什么?
爬虫是首先使用模拟浏览器访问网站获取数据,然后通过解析过滤获得有价值的信息,最后保存到到自己库中的程序.
爬虫程序包括哪些模块?
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():
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)