爬虫三部曲
1.发送请求
def get_page(url): respone=requests.get(url) return respone
2.解析数据
import re def parse_index(html):
#findall匹配所有
#re.findall(“匹配所有”,html,re.S)
#re.S(对全部文本进行匹配)
detail_urls=re.findall('<div class="items"><a class="imglink" href="(.*?)"',html,re.S) return detail_urls
#解析详情页
def parse_detail(html): movie_url=re.findall('<source src="(.*?)">',html,re.S) if movie_url: return movie_url[0]
3.保存数据
import uuid
#uuid.uuid4()根据时间戳生成一段世界上唯一的字符串
def save_video(content): with open(f'{uuid.uuid4()}.mp4','wb')as f: f.write(content) print('视频下载完毕...')
#main+回车键
测试用例:
if_name_='_main_' for line in range(5): url=f'http://www.xiaohuar.com/list-3-{line}.html'
#发送请求
response=get_page(url) #print(response)
#返回响应状态码
#print(respone.status_code)
#返回响应文本
#print(response.text)
#解析主页页面
detail_urls=parse_index(response.text)
#循环遍历详情页url
for detail_url in detail_urls: #print(detail_url)
#往每一个详情页发送请求
detail_res=get_page(detail_url) #print(response.text)
#解析详情页获取视频url
move_url=parse_detail(detail_res.text)
#判断视频url存在则打印
if move_url: print(move_url)
#往视频url发送请求获取视频二进制流
move_res=get_page(move_url)
#把视频的二进制流传给save_video函数去保存到本地
save_video(move_res.content)