热门资讯

Golang检测http代理ip是否连通

本文关键词:http代理,http代理IP,河马IP代理

Golang检测http代理ip是否连通

本章节主要介绍如何使用golang进行http代理模式下的ip,如何通过访问一个url,测试是否可以连通,达到检测代理是否可用的目的。

首先新建一个httpProxy.go文件 Return 返回得checkProxy在下面的basic.go文件实现。

text

新建basic.go文件实现checkProxy方法,这里使用百度的地址,作为检测的url。

text

新建单元测试用例来测试写好的httpproxy。

text

测试结果显示通过。

text

河马IP代理,智能链路优质IP线路,最优化资源使用、最大化吞吐率、最小化响应时间,保护用户的隐私信息,实现100%高匿。

2019-08-16 08:10:57

IP代理有哪些分类,主要用于干嘛的

本文关键词:IP代理,河马IP代理

IP代理有哪些分类,主要用于干嘛的,河马IP代理就给大家简单的分一下类,说说他的作用

FTP代理服务器:主要用于访问FTP服务器,一般有上传、下载以及缓存功能,端口一般为21、2121等

HTTP代理服务器:主要用于访问网页,一般有内容过滤和缓存功能,端口一般为80、8080、3128等

SSL/TLS代理:主要用于访问加密网站,一般有SSL或TLS加密功能(最高支持128位加密强度),端口一般为443

RTSP代理:主要用于访问Real流媒体服务器,一般有缓存功能,端口一般为554

Telnet代理:主要用于telnet远程控制(黑客入侵计算机时常用于隐藏身份),端口一般为23

POP3/SMTP代理:主要用于POP3/SMTP方式收发邮件,一般有缓存功能,端口一般为110/25

SOCKS代理:只是单纯传递数据包,不关心具体协议和用法,所以速度快很多,一般有缓存功能,端口一般为108

SOCKS代理协议又分为SOCKS4和SOCKS5,前者只支持TCP,而后者支持TCP和UDP,还支持各种身份验证机制、服务器端域名解析等(简单理解:后者是前者的升级版)

2019-08-16 07:39:55

河马IP代理——简单的python爬虫

本文关键词:python爬虫,代理IP

一 、 需求:   抓取主页面:百度百科Python词条 https://baike.baidu.com/item/Python/407313

text

分析上面的源码格式,便于提取:

关键词分析:位于class为lemmaWgt-lemmaTitle-title的dd元素的第一个h1标签内

text 简介分析(位于class为lemma-summary的div的text内容)

text

其他相关联的标签的分析(是a标签,且href以/item/开头)

text

二、抓取过程流程图:

text

三、分析:

  1. 网页下载器: 1.作用:

将互联网上URL对应的网页以HTML形式下载到本地

常用的本地下载器   1、urllib2 Python官方基础模块   2、requests 第三方包,功能更强大

2.urllib下载网页的三种方法

(1)URL传入urllib2.urlopen(url)方法

import urllib2 #直接请求 response = urllib2.urlopen('http://www.baidu.com')

#获取状态码,如果是200表示成功 code = response.getcode()

#读取内容 cont = response.read() (2)添加data、http header

将url、data、header传入urllib.Request方法 然后 URLlib.urlopen(request)

import urllib2

#创建Request对象 request = urllin2.Request(url)

#添加数据 request.add_data('a'.'1')

#添加http的header 将爬虫程序伪装成Mozilla浏览器 request.add_header('User-Agent','Mozilla/5.0')

#发送请求获取结果 response = urllib2.urlopen(request) (3)添加特殊情景的处理器

处理用户登录才能访问的情况,添加Cookie 或者需要代理才能访问 使用ProxyHandler 或者需要使用https请求

2.网页解析器 1.作用: 从网页中提取有价值数据的工具

以HTML网页字符串为输入信息,输出有价值的数据和新的待爬取url列表

网页解析器种类   1、正则表达式 将下载好的HTML字符串用正则表达式匹配解析,适用于简单的网页解析 字符串形式的模糊匹配   2、html.parser python自带模块   3、BeautifulSoup 第三方插件   4、xml 第三方插件

原理是解析成DOM树:

text

2.BeautifulSoup简介及使用方法: 1.简介:

BeautifulSoup:Python第三方库,用于从HTML或XML中提取数据

安装并测试beautifulsoup

方法1:-安装:pip install beautifulsoup4     -测试:import bs4

方法2:pycharm--File--settings--Project Interpreter--添加beautifulsoup4

2.语法介绍:

根据HTML网页字符串可以创建BeautifulSoup对象,创建好之后已经加载完DOM树 即可进行节点搜索:find_all、find。搜索出所有/第一个满足要求的节点(可按照节点名称、属性、文字进行搜索) 得到节点之后可以访问节点名称、属性、文字

如: <a href="123.html" class="aaa">Python</a> 可根据: 节点名称:a 节点属性:href="123.html" class="aaa" 节点内容:Python

创建BeautifulSoup对象:

from bs4 import BeautifulSoup

#根据下载好的HTML网页字符串创建BeautifulSoup对象 soup = BeautifulSoup(   html_doc, #HTML文档字符串   'html.parser' #HTML解析器   from_encoding='utf-8' #HTML文档编码 )

搜索节点: 方法:find_all(name,attrs,string)

#查找所有标签为a的节点   soup.find_all('a')

#查找所有标签为a,链接符合/view/123.html形式的节点   soup.find_all('a',href='/view/123.html')   soup.find('a',href=re.compile('aaa')) #用正则表达式匹配内容

#查找所有标签为div,class为abc,文字为Python的节点   soup.find_all('div',class_='abc',string='Python') #class是Python关键字 避免冲突

由于class是python的关键字,所以讲class属性加了个下划线。

访问节点信息:   得到节点:<a href="123.html" class="aaa">Python</a>

#获取查找到的节点的标签名称   node.name #获取查找到的节点的href属性   node['href'] #获取查找到的节点的连接文字   node.gettext()

四、代码实现: spider.py

爬虫的入口调度器

from baike import url_manager, html_downloader, html_parser, html_outputer

class SpiderMain(object): def init(self): self.urlManager = url_manager.UrlManager() self.downloader = html_downloader.HtmlDownLoader() self.parser = html_parser.HtmpParser() self.outputer = html_outputer.HtmlOutpter()

def craw(self,url):
    count = 1 #定义爬取几个页面
    self.urlManager.add_new_url(url)
    while self.urlManager.has_new_url():
        try:
            # 获取一个url
            new_url = self.urlManager.get_new_url()
            # 访问url,获取网站返回数据
            html_content = self.downloader.download(new_url)
            new_urls, new_datas = self.parser.parse(new_url, html_content)
            self.urlManager.add_new_urls(new_urls)
            self.outputer.collect_data(new_datas)
            print(count)
            if count == 5:
                break
            count = count+1
        except Exception as e:
            print("发生错误",e)
    # 将爬取结果输出到html
    self.outputer.out_html()

if name=="main": url = 'https://baike.baidu.com/item/Python/407313' sm = SpiderMain() sm.craw(url) url_manager.py

url管理器

class UrlManager(object): def init(self): # 定义两个set,一个存放未爬取的url,一个爬取已经访问过的url self.new_urls = set() self.old_urls = set()

# 添加一个url的方法
def add_new_url(self,url):
    if url is None:
        return  None
    if url not in self.new_urls and url not in self.old_urls:
        self.new_urls.add(url)

# 判断是否还有待爬取的url(根据new_urls的长度判断是否有待爬取的页面)
def has_new_url(self):
    return len(self.new_urls) != 0

# 定义获取一个新的url的方法
def get_new_url(self):
    if len(self.new_urls)>0:
        # 从new_urls弹出一个并添加到old_urls中
        new_url = self.new_urls.pop()
        self.old_urls.add(new_url)
        return new_url

# 批量添加url的方法
def add_new_urls(self, new_urls):
    if new_urls is None:
        return
    for url in new_urls:
        self.add_new_url(url)

html_downloader.py

读取网页的类

import urllib.request

class HtmlDownLoader(object): def download(self, url): if url is None: return # 访问url response = urllib.request.urlopen(url) # 如果返回的状态码不是200代表异常 if response.getcode() != 200: return return response.read() html_parser.py

网页解析器类

import re import urllib

from bs4 import BeautifulSoup

class HtmpParser(object): # 解析读取到的网页的方法 def parse(self, new_url, html_content): if html_content is None: return soup = BeautifulSoup(html_content,'html.parser',from_encoding='utf-8') new_urls = self.get_new_urls(new_url,soup) new_datas = self.get_new_datas(new_url,soup) return new_urls, new_datas

# 获取new_urls的方法
def get_new_urls(self, new_url, soup):
    new_urls = set()
    # 查找网页的a标签,而且href包含/item
    links = soup.find_all('a',href=re.compile(r'/item'))
    for link in links:
        # 获取到a必去哦啊Ian的href属性
        url = link['href']
        # 合并url。使爬到的路径变为全路径,http://....的格式
        new_full_url = urllib.parse.urljoin(new_url,url)
        new_urls.add(new_full_url)
    return new_urls



# 获取new_data的方法
def get_new_datas(self, new_url, soup):
    new_datas = {}
    # 获取标题内容
    title_node = soup.find('dd',class_='lemmaWgt-lemmaTitle-title').find('h1')
    new_datas['title'] = title_node.get_text()

    #获取简介内容
    summary_node = soup.find('div',class_='lemma-summary')
    new_datas['summary'] = summary_node.get_text()

    new_datas['url'] = new_url

    return new_datas

html_outputer.py

爬虫的入口调度器

from baike import url_manager, html_downloader, html_parser, html_outputer

class SpiderMain(object): def init(self): self.urlManager = url_manager.UrlManager() self.downloader = html_downloader.HtmlDownLoader() self.parser = html_parser.HtmpParser() self.outputer = html_outputer.HtmlOutpter()

def craw(self,url):
    count = 1 #定义爬取几个页面
    self.urlManager.add_new_url(url)
    while self.urlManager.has_new_url():
        try:
            # 获取一个url
            new_url = self.urlManager.get_new_url()
            # 访问url,获取网站返回数据
            html_content = self.downloader.download(new_url)
            new_urls, new_datas = self.parser.parse(new_url, html_content)
            self.urlManager.add_new_urls(new_urls)
            self.outputer.collect_data(new_datas)
            print(count)
            if count == 5:
                break
            count = count+1
        except Exception as e:
            print("发生错误",e)
    # 将爬取结果输出到html
    self.outputer.out_html()

if name=="main": url = 'https://baike.baidu.com/item/Python/407313' sm = SpiderMain() sm.craw(url)

运行spider.py的主函数:(结果会将提取到的结果保存到html中)

text

总结:   python的类类似于java,继承object

python的返回值return和return None一样(None类似于java的null关键字)

本文转载:博客园 https://www.cnblogs.com/qlqwjy/p/8877705.html

python爬虫在爬取数据的过程中,会出现越爬越慢或者是被目标网站禁止的状况,一般这种状况是对方启动了反爬虫机制,可以使用高匿代理IP解决这样的问题,隐藏源IP就OK 了

2019-08-16 03:06:05

河马IP代理——Go语言使用Golang连接MongoDB数据库实现增删改查

本文关键词:河马IP代理,MongoDB数据库

Go语言使用Golang连接MongoDB数据库实现增删改查

1.通过mongodb服务端口号启动mongodb服务 text

2.连接mongodb数据库

text

3.插入数据到持久层mongodb中

河马IP代理——Go语言使用Golang连接MongoDB数据库实现增删改查 text

4.在持久层mongodb中删除数据

text

5.将数据在持久层mongodb中更改

河马IP代理——Go语言使用Golang连接MongoDB数据库实现增删改查

text

6.在数据库中查询单条或多条数据

text

7.显示数据库集合中元素数目

河马IP代理——Go语言使用Golang连接MongoDB数据库实现增删改查

text

2019-08-15 06:43:52

HTTP代理IP、HTTPS代理IP和Socks等代理IP有何区别?

代理ip的种类较多,有透明代理IP、普通匿名代理、高级匿名代理IP、HTTP代理IP、HTTPS代理IP和Socks代理IP等,那么他们是怎么分类的,这些代理ip之间又有什么区别呢?下面河马IP代理 为大家介绍下关于代理ip的分类及其区别:

1.按匿名分类

可以分为透明代理IP、普通匿名代理IP和高级匿名代理IP。透明代理IP在发送请求的同时,会将本机的真实IP也发送到目标服务器,要慎用;普通匿名代理IP虽然不会将本机的真实IP暴露给目标服务器,但会告诉目标服务器自己是代理IP,是在给某人背锅;高级匿名代理IP则是什么也不告诉目标服务器,是个忠诚的背锅侠。

根据代理IP被使用的概率来分还可以分为这样几种:万人骑、共享IP池和独享IP池。免费代理IP和普通代理或者开放代理IP(经过加工处理的免费代理IP)是典型的万人骑,什么是万人骑呢,就是有成千上万个人在用,甚至更多,都被用烂了;共享IP池则是服务商通过机房的拨号服务器搭建了一个代理IP池,卖给多个客户共同使用,现在最常见的收费代理IP就是这种模式;独享IP池则是通过云立方拨号服务器搭建一个代理IP池,只卖给一个客户使用,或者自己搭建代理IP池自己使用,这样的成本比较昂贵,一般人负担不起。

2.按用途分类

最常见的可以分为HTTP代理IP、HTTPS代理IP和Socks代理IP。HTTP代理IP多用于浏览器访问网页,发送HTTP请求,常用于网络爬虫,网络投票、网站注册等工作中;HTTPS代理是在HTTP的基础上加了一层SSL协议,支持最高128位加密强度的http代理,可以作为访问加密网站的代理。加密网站是指以https//开始的网站,ssl的标准端口为443。Socks代理IP是全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端。支持多种协议,包括http、ftp请求及其它类型的请求。它分socks 4 和socks 5两种类型,socks 4只支持TCP协议而socks 5支持TCP/UDP协议,还支持各种身份验证机制等协议。其标准端口为1080。

3.按成本分类

可以分为免费代理IP和付费代理IP,付费代理IP又分为低价代理IP和高价代理IP,低价代理IP只是将免费代理经过批量验证,将有效率提高了那么一丢丢而已。高价代理则是服务商通过动态vps自建代理IP池,成本比较高昂,所以价格相对免费代理IP和低价代理IP来说,价格更高。

2019-08-15 06:11:53