帮助中心

   

热门搜索: 免费续期  推广  永久会员

代理IP视频网站爬取案例代码分享

使用代理IP爬取网站,我们能够从不同类型的网站来获取信息,但是面对不同网站的爬取策略,我们需要进行不同的规划。通过一个具体的案例,大家可以感受一下爬取的过程是如何实现的。

 

代理IP视频网站爬取案例代码分享

 

迅联加速分享爬取视频网站的代码案例给大家,详情代码如下:

 

#对梨视频的视频爬取

import re,random

import requests

from lxml import etree

from multiprocessing.dummy import Pool

pool = Pool(4)

#定义一个函数,传送每一个url,下载视频

def downloadDate(url):

#content爬取二进制使用

return requests.get(url=url,headers=headers).content

#定义一个函数,存储每一个视频

def saveDate(data):

name = str(random.randint(0,10000))+’mp4′

with open(name,’wb’) as

fp: fp.write(data)

print(name,’下载成功’)

url = ‘https://www.pearvideo.com/category_1’

headers = {

“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36″ }

page_text = requests.get(url=url,headers=headers).text

tree = etree.HTML(page_text) li_list = tree.xpath(‘//ul[@id=”listvideoListUl”]/li’)

#定义一个空列表存放所有的视频链接

urls = []

for li in li_list:

detail_url = ‘https://www.pearvideo.com/’+li.xpath(‘./div/a/@href’)[0] pages_text = requests.get(url=detail_url,headers=headers).text ex = ‘srcUrl=”(.*?)”,vdoUrl’ video_url = re.findall(ex,pages_text,re.S)[0] urls.append(video_url)

#在耗时较为严重的地方使用线程池,视频的请求下载及持久化存储

#让函数对urls中的每一个元素进行异步网络请求下载

#函数不能传参,不能加括号

#datas是一个列表,存储的是所有的视频二进制的数据 datas = pool.map(downloadDate,urls) pool.map(saveDate,datas) pool.close()

#join的意思是让主线程等待子线程全部结束后再结束 pool.join()

#在获取视频链接的时候发现视频并不是存储在标签中,而是在js中的变量里,

# 此时我们只能使用支持各种匹配的正则来获取链接

“””

var contId=”1565375″,liveStatusUrl=”liveStatus.jsp”, liveSta=””,playSta=”1″,autoPlay=!1,isLiving=!1,isVrVideo=!1, hdflvUrl=””,sdflvUrl=””,hdUrl=””,sdUrl=””,ldUrl=””, srcUrl=”https://video.pearvideo.com/mp4/short/20190612/cont-1565375-14010027-hd.mp4″, vdoUrl=srcUrl,skinRes=”//www.pearvideo.com/domain/skin”,videoCDN=”//video.pearvideo.com”; “””

关闭
19907977089
关注微信公众号,免费送30分钟时长