本人刚刚学习爬虫,见每次都需要添加报头比较繁琐,故将该过程封装为Url_ProxyHelper类,代码如下

 import urllib.request as ur

 class Url_ProxyHelper:
def __init__(self, url, proxy_add, savepath=None):
self.url = url
self.proxy_add = proxy_add
self.req = None
self.proxy = None
self.opener = None
self.info = None
self.save_path = savepath # 报头代理设置
def set_UrlAndProxy(self):
# 添加报头
self.req = ur.Request(self.url)
self.req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0') # 设置代理服务器
self.proxy = ur.ProxyHandler({'http': self.proxy_add})
self.opener = ur.build_opener(self.proxy, ur.HTTPHandler)
ur.install_opener(self.opener)
return self.req # 数据存档
def save_InFile(self):
self.req = self.set_UrlAndProxy()
self.info = ur.urlopen(self.req).read()
open(self.save_path, 'wb').write(self.info) # 数据返回
def feedbak_info(self):
self.req = self.set_UrlAndProxy()
self.info = ur.urlopen(self.req).read().decode('utf-8') # decode()用来解码,特别是中文
return str(self.info)

测试:

 from Url_ProxyHelper import Url_ProxyHelper

 url = "https://www.baidu.com/"
save_path = "E:/workspace/PyCharm/codeSpace/books/python_web_crawler_book/chapter6/demo4/test_url_proxy.html"
proxy = "175.155.24.20:808" # 调用Url_ProxyHelper类
#uph = Url_ProxyHelper(url, proxy, savepath=save_path)
uph = Url_ProxyHelper(url, proxy) info = uph.feedbak_info() print(info)

手动爬虫之报头及代理封装类(python3)的更多相关文章

  1. Py之Crawler:爬虫利用随机选取代理访问服务器的方法实现下载某网址上所有的图片到指定文件夹——Jason niu

    #Py之Crawler:爬虫利用随机选取代理访问服务器的方法实现下载某网址上所有的图片到指定文件夹 import urllib.request import os import random def ...

  2. 反爬虫之搭建IP代理池

    反爬虫之搭建IP代理池 听说你又被封 ip 了,你要学会伪装好自己,这次说说伪装你的头部.可惜加了header请求头,加了cookie 还是被限制爬取了.这时就得祭出IP代理池!!! 下面就是requ ...

  3. 爬虫反爬之代理IP

    爬虫反爬之代理IP 代理IP其实本就是在requests模块中的参数 定义: 代替原来的IP地址去对接网络的IP地址. 作用: 隐藏自身真实IP,避免被封. 获取代理IP网站 西刺代理.快代理.全网代 ...

  4. 网络爬虫一定要用代理IP吗

    数据采集现在已经成为大数据时代不可以缺少的一部分,在数据采集过程中,很多人都会用到代理ip,那么网络爬虫一定要用代理IP吗?答案虽然不是肯定的,但出现以下情况一定是需要用到代理IP的.1.在爬虫的时候 ...

  5. 手动爬虫之流程笔记1(python3)

    一.引入拓展库 由于刚刚起步学习爬虫,故从urllib库开始 首先引入urllib,这里主要用到urllib中request类 import urllib.request as ur 二.设置全局参数 ...

  6. 手动爬虫之淘宝笔记本栏(ptyhon3)

    1.这次爬虫用到了之前封装的Url_ProxyHelper类,源代码如下 import urllib.request as ur class Url_ProxyHelper: def __init__ ...

  7. python 网页爬虫+保存图片+多线程+网络代理

    今天,又算是浪费了一天了.python爬虫,之前写过简单的版本,那个时候还不懂原理,现在算是收尾吧. 以前对网页爬虫不了解,感觉非常神奇,但是解开这面面纱,似乎里面的原理并不是很难掌握.首先,明白一个 ...

  8. C#多线程爬虫抓取免费代理IP

    这里用到一个HTML解析辅助类:HtmlAgilityPack,如果没有网上找一个增加到库里,这个插件有很多版本,如果你开发环境是使用VS2005就2.0的类库,VS2010就使用4.0,以此类推.. ...

  9. 简单爬虫-爬取免费代理ip

    环境:python3.6 主要用到模块:requests,PyQuery 代码比较简单,不做过多解释了 #!usr/bin/python # -*- coding: utf-8 -*- import ...

随机推荐

  1. RJ45接口定义

    RJ45接口定义 常见的RJ45接口有两类:用于以太网网卡.路由器以太网接口等的DTE类型,还有用于交换机等的DCE类型. DTE我们可以称做“数据终端设备”,DCE我们可以称做“数据通信设备”.从某 ...

  2. sublime for mac 注册码

    https://www.jianshu.com/p/04e1b65dd2c0https://fatesinger.com/100121

  3. Certificates

    Certificates Certificates 即 ”证书“,约等于通行证,申请证书是我们进行真机调试与发布的第一步.证书主要分为两类:Development证书用来开发和调试应用程序Produc ...

  4. Java并发编程(六):Java里实现对象安全发布的四种方式

    接上篇,首先要了解什么是对象的发布与逸出? Java里安全发布对象的四种方法1.单例(注意懒汉和饿汉的区别)2.静态属性,注意类里的静态域和静态代码块的顺序有要求3.枚举4.final

  5. Resources.FindObjectsOfTypeAll<T>()的坑(Ghost prefab)

    今天遇到了一个Bug,因为调用Resources.FindObjectsOfTypeAll<T>()遍历整个场景,结果遍历出的对象不对.比较哈希一查果然是两个.原来prefab本身和pre ...

  6. android逆向分析之smali语法

    一 .smali数据类型 1.Dalvik字节码 Davlik字节码中,寄存器都是32位的,能够支持任何类型,64位类型(Long/Double)用2个连续的寄存器表示: Dalvik字节码有两种类型 ...

  7. 利用JMX统计远程JAVA进程的CPU和Memory

    http://songzi0206.iteye.com/blog/1541636 ******************** 从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java ...

  8. css断句 word-break

    word-break:break-all;word-wrap:break-word; 兼容IE6 火狐 chrome

  9. 微信小程序上传一或多张图片

    一.要点 1.选取图片 wx.chooseImage({ sizeType: [], // original 原图,compressed 压缩图,默认二者都有 sourceType: [], // a ...

  10. Easyui datebox单击文本框显示日期选择

    Easyui默认是点击文本框后面的图标显示日期,为了更进一步优化体验 修改为单击文本框显示日期选择框 修改jquery.easyui.min.js(作者用的是1.3.6版本,其他版本或有区别) 可 c ...