代理ip的使用以及多进程爬取

一.代理皮的简单使用

简单的看一二例子即可

import requests
#代理ip 高频的ip容易被封,所以使用ip代理
#免费代理 ip:www.goubanjia.com    快代理  西祠代理
headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'
}
url='https://www.baidu.com/s?wd=ip'
#ip代理的使用proxies,先指定协议的类型,http,https,再指定ip的端口
page_text=requests.get(url=url,headers=headers,proxies={'https':'1.10.186.79:8080'}).text

with open('ip.html','w',encoding='utf-8') as f:
    f.write(page_text)

 二.多进程爬取

import requests
import re
import random
from multiprocessing.dummy import Pool
from lxml import etree

#多线程爬取一定是在耗时比较多的情况下
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER'
}
#爬取第一页数据
url='https://www.pearvideo.com/category_6'
page_text=requests.get(url=url,headers=headers).text
tree=etree.HTML(page_text)
#xpath解析返回一个列表
li_list=tree.xpath('//ul[@id="listvideoListUl"]/li')
# print(li_list)
#循环列表获取视频的url

#解析出视频详情页的url
video_url_list=[]
for li in li_list:
    detail_url='https://www.pearvideo.com/'+li.xpath('./div/a/@href')[0]
    detail_page_text=requests.get(url=detail_url,headers=headers).text
    ex='srcUrl="(.*?)",vdoUrl'
    video_url=re.findall(ex,detail_page_text,re.S)[0]#re.单行匹配,一定要记得写,返回的额还是列表
    # 存放的是所有视频的url
    video_url_list.append(video_url.rstrip('"'))

#从网页直接获取视频
def video_download(url):
    return requests.get(url=url,headers=headers).content
#保存下来的视频
def save_video(data):
    name=str(random.randint(1,5000))+'.mp4'
    with open(name,'wb') as f:
        f.write(data)
        print(name+'保存成功')

if __name__ == '__main__':
    # #获取视频数据和写入都是比较耗时间的,我我们就用多进程进行会比较块
    # #实例化一个进程池
    pool=Pool(5)
    #map函数接收两个参数,第一是函数,第二是可迭代对象,函数会依次作用到可迭代对象的每一个元素
    video_data=pool.map(video_download,video_url_list)
    print("-->",video_data)
    #持久化存储视频的过程也是比价耗时间的,所以需要多进程会比较块一点
    pool.map(save_video,video_data)
    pool.close()
    pool.join()

 

posted @ 2019-02-27 15:29  阿布_alone  阅读(890)  评论(0编辑  收藏  举报
TOP