一.代理皮的简单使用

简单的看一二例子即可

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()

代理ip的使用以及多进程爬取的更多相关文章

  1. python+正则+多进程爬取糗事百科图片

    话不多说,直接上代码: # 需要的库 import requests import re import os from multiprocessing import Pool # 请求头 header ...

  2. 使用Xpath+多进程爬取诗词名句网的史书典籍类所有文章。update~

    上次写了爬取这个网站的程序,有一些地方不完善,而且爬取速度较慢,今天完善一下并开启多进程爬取,速度就像坐火箭.. # 需要的库 from lxml import etree import reques ...

  3. python+BeautifulSoup+多进程爬取糗事百科图片

    用到的库: import requests import os from bs4 import BeautifulSoup import time from multiprocessing impor ...

  4. 使用进程池模拟多进程爬取url获取数据,使用进程绑定的回调函数去处理数据

    1 # 使用requests请求网页,爬取网页的内容 2 3 # 模拟使用进程池模拟多进程爬取网页获取数据,使用进程绑定的回调函数去处理数据 4 5 import requests 6 from mu ...

  5. Scrapy-redis改造scrapy实现分布式多进程爬取

    一.基本原理: Scrapy-Redis则是一个基于Redis的Scrapy分布式组件.它利用Redis对用于爬取的请求(Requests)进行存储和调度(Schedule),并对爬取产生的项目(it ...

  6. xpath+多进程爬取网易云音乐热歌榜。

    用到的工具,外链转换工具 网易云网站直接打开源代码里面并没有对应的歌曲信息,需要对url做处理, 查看网站源代码路径:发现把里面的#号去掉会显示所有内容, 右键打开的源代码路径:view-source ...

  7. xpath+多进程爬取八零电子书百合之恋分类下所有小说。

    代码 # 需要的库 import requests from lxml import etree from multiprocessing import Pool import os # 请求头 he ...

  8. xpath+多进程爬取全书网纯爱耽美类别的所有小说。

    # 需要的库 import requests from lxml import etree from multiprocessing import Pool import os # 请求头 heade ...

  9. 使用Python爬取代理ip

    本文主要代码用于有代理网站http://www.kuaidaili.com/free/intr中的代理ip爬取,爬虫使用过程中需要输入含有代理ip的网页链接. 测试ip是否可以用 import tel ...

随机推荐

  1. jquery中children()

  2. getContextPath、getServletPath、getRequestURI,getRealPath的区别

    假定你的web application 项目名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下 ...

  3. Claims Based Authentication and Token Based Authentication和WIF

    基于声明的认证方式,其最大特性是可传递(一方面是由授信的Issuer,即claims持有方,发送到你的应用上,注意信任是单向的.例如QQ集成登录,登录成功后,QQ会向你的应用发送claims.另一方面 ...

  4. Unity破解不成功解决方案

    你是不是遇到过Unity新版本出来的时候就急着使用,但是安装好了,却破解不成功的问题(你之前的版本破解过).这是由于你的注册表没有彻底的删除,接下来我们图解如何清理. 1.卸载以前的版本,卸载完了删除 ...

  5. 20169219《移动平台开发实践》移动APP设计应该考虑到的问题

    1.开发流程包括: (1)用户需求分析 (2)产品原型设计 (3)UI视觉设计 (4)APP开发 (5)项目测试 (6)发布 App开发经过UI设计完成之后,便会进入开发阶段. (1)服务器端:编写接 ...

  6. Slf4j MDC 使用和 基于 Logback 的实现分析

    前言 如今,在 Java 开发中,日志的打印输出是必不可少的, 关于  有了日志之后,我们就可以追踪各种线上问题.但是,在分布式系统中,各种无关日志穿行其中,导致我们可能无法直接定位整个操作流程.因此 ...

  7. myeclipse 8.0 注册码

    Subscriber:accptechSubscription Code:nLR8ZC-855550-6765855429037911 Subscriber:Hello World Subscript ...

  8. 关于在datepicker中,只选年月

    有这么个需求,datepicker默认是选某个具体的日子的,但是现在只选到年月为止, solution: html如下: <div> <label for="startDa ...

  9. DB2触发器简单例子

    db2使用版本9.7 创建A .B两个表,A表数据有更新.删除.插入时,将A表ID记录放入B表 1.create table A (id varchar(5),name varchar(30)); c ...

  10. C# Socket通信改进记录

    1. Socket 使用原始Socket,Send和Recv方法 进行发送和消息获取.(另起后台线程 不停获取和发送) public void RecvMsg() { //receive messag ...