Go语言中文网 为您找到相关结果 82

爬虫框架go_spider

##简介## 本项目基于golang开发,是一个开放的垂直领域的爬虫引擎,主要希望能将各个功能模块区分开,方便使用者重新实现子模块,进而构建自己垂直方方向的爬虫。 本项目将爬虫的各个功能流程区分成Spider模块(主控),Downloader模块(下载器),PageProcesser模块(页面分析),Scheduler模块(任务队列),Pipeline模块(结果输出); ##执行过程简述:## 1. Spider从Scheduler中获取包含待抓取url的Request对象,启动一个协程,一个协程执行一次爬取过程,此处我们把协程也看成Spider,Spider把Request对象传入Downloader,Downloader下载该Request对象中url所对应的页面...阅读全文

重量级爬虫软件Pholcus

# pholcus [![GoDoc](https://godoc.org/github.com/tsuna/gohbase?status.png)](https://godoc.org/github.com/henrylee2cn/pholcus) [![GitHub release](https://img.shields.io/github/release/henrylee2cn/pholcus.svg)](https://github.com/henrylee2cn/pholcus/releases) Pholcus(幽灵蛛)是一款纯Go语言编写的高并发、分布式、重量级爬虫软件,支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批...阅读全文

Go 开发的 IM 和推送服务 goim

goim 是一个支持集群的im及实时推送服务(支持websocket,http和tcp协议) 特性: * 轻量级 * 高性能 * 纯Golang实现 * 支持单个、多个以及广播消息推送 * 支持单个Key多个订阅者(可限制订阅者最大人数) * 心跳支持(应用心跳和tcp、keepalive、http log pulling) * 支持安全验证(未授权用户不能订阅) * 多协议支持(websocket,tcp,http) * 可拓扑的架构(job、logic模块可动态无限扩展) * 基于Kafka做异步消息推送 架构: ![image](http://static.oschina.net/uploads/img/201511/26172127_SpSJ.png) 协...阅读全文

开源项目 2015-11-25 16:00:00 Terry-Mao

使用Go语言(golang)写个简单的爬虫

上次用Scala写了个爬虫。最近在闲工夫之时,学习Go语言,便用Go移植了那个用Scala写的爬虫,代码如下: package main import ( "fmt" "io/ioutil" "net/http" "regexp" ) var ( ptnIndexItem = regexp.MustCompile(`< atarget="_blank" href="(.+\.html)" title=".+" >(.+)`) ptnContentRough = regexp.MustCompile(`(?s).*

(.*)
.*`) ptnBrTag = regexp.MustCompile(`
`...阅读全文

博文 2014-10-04 19:26:05 tt-0411

分布式爬虫ants

### 由来 一直用[scrapy](https://github.com/scrapy/scrapy)抓数据,scrapy的分布式部署,需要⼈人⼯工分配抓取链接。 所以参考scrapy的爬⾍虫架构和[elasticsearch](https://github.com/elastic/elasticsearch)的分布式架构。 编写了分布式的爬⾍虫[ants](https://github.com/wcong/ants-go), 目前是alpha,欢迎大家来试用 ### 功能 * 分布式:master分配request给各个node,node将抓取的结果,产⽣生的新request返回给master node * web api:提供json格式的web api,开...阅读全文

开源项目 2015-03-22 09:08:47

Go BT种子爬虫

主要实现了BitTorrent DHT协议。爬虫的原理是利用DHT协议监听announce_peer消息,然后根据获得的metada info 下载种子。 你可以用来打造你的海盗湾,也可以进行数据分析。不过要注意版权和被墙的风险,因为里边包含很多限制级资源,比如色情资源。 Github:https://github.com/shiyanhui/dht 这个是利用这个库做的一个BT search engine: http://bthub.io...阅读全文

go语言 grequests+goquery 简单爬虫,使用多协程并发爬取

/*下载工具*/ package main import ( "fmt" //go语言版本的jquery "github.com/PuerkitoBio/goquery" "os" "sync" "strings" //go语言版本的request "github.com/levigross/grequests" "time" "strconv" ) var wg sync.WaitGroup func main() { now := time.Now() initalUrls := []string{"http://www.zngirls.com/girl/18071/album/", } for _, url := range initalUrls { doc, err := goque...阅读全文

博文 2016-10-26 01:00:02 davidsu33

土拨鼠高级封装爬虫包GoSpider

![image](https://raw.githubusercontent.com/hunterhug/GoSpider/master/tubo.png) 万维网网络机器人,又称蜘蛛,爬虫,原理主要是通过构造符合HTTP协议的网络数据包,向指定主机请求资源,获取返回的数据.万维网有大量的公开信息,人力采集数据费时费力,故激发了爬虫的产业化. 批量获取公开网络数据并不违反,但由于无差别性,无节制,十分暴力的手段会导致对方服务的不稳定,因此,大部分资源提供商对数据包进行了某些过滤,在此背景下,小批量数据获取成为了难题. 综合各种需求,如各种API对接,自动化测试等原理均一样,故开发了此爬虫库. 土拨鼠爬虫库是一个人类友好姿势的代码库,开发采用面向对象的方式,易于理解.通过对Golang...阅读全文

开源项目 2017-07-04 11:00:08 网友

垂直领域爬虫框架go_spider

本项目基于golang开发,是一个开放的垂直领域的爬虫引擎,主要希望能将各个功能模块区分开,方便使用者重新实现子模块,进而构建自己垂直方方向的爬虫。 本项目将爬虫的各个功能流程区分成Spider模块(主控),Downloader模块(下载器),PageProcesser模块(页面分析),Scheduler模块(任务队列),Pipeline模块(结果输出); ![enter image description here][1] [1]: https://github.com/hu17889/doc/raw/master/go_spider/img/project.pn...阅读全文

Go开发的分布式爬虫框架yispider

yispider 是一款分布式爬虫平台,帮助你更好的管理和开发爬虫。 内置一套爬虫定义规则(模版),可使用模版快速定义爬虫,也可当作框架手动开发爬虫 码云地址:https://gitee.com/bilibala/YiSpider github地址:https://github.com/2young2simple/yispider ## 架构 目前框架分为2个部分: #### 1.爬虫部分(spider节点): 内部结构参考python scrapy框架,主要由 schedule,page process,pipline 4个部分组成,单个爬虫单独调度器,单独上下文管理,目前内置2中pipline的方式,控制台和文件,节点信息注册在etcd上用于...阅读全文

网络爬虫框架Antch

Antch, 是快速的,强大的,可扩展的爬虫框架,类似于[Scrapy](https://github.com/scrapy/scrapy)。 * 支持robots.txt * 支持自定义模块 * 支持Item管道处理 * 支持多种代理协议(socks5,http,https) * 支持XPath查询HTML/XML数据 * 做为框架,易于上手 阅读全文

开源项目 2017-12-13 03:39:37

如何用go语言来转换c语言的结构体到go的结构体

在和c和c++客户端做网络通信的时候,为了方便,经常以结构体作为通信的参数 我们需要将c中的结构体直接转换到go中的结构体中。 在c语言中的结构体实例如下 注意要以1字节对齐。 #pragma pack(push) // 将当前pack设置压栈保存 #pragma pack(1)// 必须在结构体定义之前使用 typedef struct { unsigned short dev_id; unsigned char dir; unsigned char cmd; unsigned char oper; unsigned short len; }Msg_Head; typedef struct...阅读全文

Go 实现的轻量级的 config 库go-conf

go-conf 是使用 Go 实现的一个轻量级的 config 库,参考了 ozzo-config 的设计,但具有更优的性能和支持动态移植配置的功能。 go-conf 采用 MIT 开源协议。 从配置文件中读取配置,默认支持 JSON 格式文件,提供了接口,也可非常方便地扩展支持其他格式配置文件; 可将一个 go 的结构体数据直接动态移植到 config 实例中; 不需要提前构建结构体就可以直接获取你想要的数据...阅读全文

golang 用/x/net/html写的小爬虫,爬小说

平时除了写代码,唯一的娱乐就是看看小说,放松一下大脑了。但在这个网站广告铺天盖地的环境下,想单纯的看会小说也成了一个问题了。最近在学习golang,于是就想写一个小爬虫,把小说爬下来看而不用看到讨厌的广告了。网上大多数教程都是用第三方库,很多都是用github.com/PuerkitoBio/goquery这个库,但因为从来没写过web,对jquery的语法完全是空白,而go语言圣经上的示例用到x/net/html这个google自己维护的库来爬网站的链接,于是研究了一下这个库,写了一个小爬虫,事实证明这个库写爬虫完全没问题,只不过比goquery麻烦一点,毕竟goquery是在这个库的基础上封装的,这个库更底层一点。特写下这往篇日记,记心太烂,怕过一段时间又忘了。经过这几天恶补了一下htm...阅读全文

博文 2017-08-22 10:05:01 neo_5687

golang sql根据struct字段来生成记录

/* Author : tuxpy Email : q8886888@qq.com.com Create time : 2017-11-04 23:13:08 Filename : main.go Description : */ package main import ( "database/sql" "errors" "fmt" "reflect" "time" "utils" _ "github.com/mattn/go-sqlite3" ) func ToStruct(rows *sql.Rows, to interface{}) error { v := reflect.ValueOf(to) if v.Elem().Type().Kind() != reflect.Struct ...阅读全文

博文 2017-11-04 17:03:16 疯狂的小企鹅

Go 语言开发的爬虫框架Grabant

Grabant是一个用go语言开发,用javascript语法书写规则的爬虫框架 规则开发和神箭手的爬虫规则类似,开发的目的是兼容大部分神箭手已有的规则 一些相关解释及说明如下: **扫描页**是直接配置的一级页面,这个页面扫描的结果是抓取列表页; **列表页**是扫描后的二级页面,这个页面是为了抓取内容页; **内容页**才是真正匹配我们需要内容的规则的页面,内容页会匹配我们需要的内容并输出; 每次扫描页面,会抽取页面的链接放入队列进行规则匹配,列表页规则如果为空则列表页抽取链接全放入列表队列,同理内容页,从内容页中抽取的数据是以xpath或者正则匹配的规则 举个栗子: 如下是一个简易的爬豆瓣电影评分的规则 configs是一个json配置对应的字段意义如下: domain...阅读全文

开源项目 2017-10-13 11:00:03 网友

[go语言]内存分配器性能测试

在C/C++里,自己动手实现内存分配器是很常见的事情,写过几年C/C++程序的人可能都做过这样的事情。这其中很重要的一个原因是C/C++不支持垃圾回收。但是既然go语言已经支持垃圾回收,还有必要自己去写一个内存分配器吗?我们做一个简单的测试看看结果怎么样。 测试平台: OS: ubuntu 12.04 x86_64 CPU: i5 2.27G MEMORY: 8G // ben1.go 自己实现内存分配器 package main type Pool struct { buf []byte } func (p *Pool) alloc(size int) []byte { if len(p.buf) < size { l := 1024 * 1024 for l < size { l += ...阅读全文

博文 2014-10-30 18:07:21 stevewang

Go开发的分布式爬虫框架 - yispider

yispider是一款分布式爬虫平台,帮助你更好的管理和开发爬虫。 内置一套爬虫定义规则(模版),可使用模版快速定义爬虫,也可当作框架手动开发爬虫 项目地址: https://github.com/2young2simple/yispider ## 架构 目前框架分为2个部分: #### 1.爬虫部分(spider节点): 内部结构参考python scrapy框架,主要由 schedule,page process,pipline 4个部分组成,单个爬虫单独调度器,单独上下文管理,目前内置2中pipline的方式,控制台和文件,节点信息注册在etcd上用于manage节点发现。 * `core`:负责爬虫生命周期、上下文的管理,负责爬虫的运行。 ...阅读全文

轻量级的嵌入式网站讨论系统commento

Commento 是一个轻量级的嵌入式网站讨论系统。您可以将其嵌入到您的博客,新闻文章以及您希望读者添加评论的任何地方。这是轻量级和简单的,可以快速页面加载。重点是还关乎隐私,评论引擎都关乎隐私。 如果你想使用Commento,你有三个选择: 1.使用Docker 如果你正在关闭自我托管路由,建议使用Docker运行Commento。为此提供了一个最小的Docker镜像[`adtac/commento`](https://hub.docker.com/r/adtac/commento/)。您可以通过拉取图像并启动它来获取容器: 端口上将显示您的机器上的服务器`80`; 把你的Commento前端配置指向这个。 2.使用二进制版本 如果你不想安装整个Docker,你可以简单地使...阅读全文

开源项目 2018-01-25 16:30:01 网友

Golang 网络爬虫框架gocolly/colly 四

Golang 网络爬虫框架gocolly/colly 四 爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟。回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook,myspace,filcker,youtube等等,国际上叫得上名字的社交网站都爬过,大部分网站提供restful api,有些功能没有api,就只能用http抓包工具分析协议,自己爬;国内的优酷、土豆、校内网、web版qq、网页邮箱等等也都爬过;那时候先用C#写demo,项目是C++的,所以还要转换成托管C++的代码。第一阶段的主要心得是cookie管理,比较难搞的cookie就借助于webbrowser控件。 第二阶段是13年左右,...阅读全文

博文 2018-01-10 16:30:03 majianguo

新手求助 为什么不能加载包 我只是想做一个小爬虫 代码没有语法错误

"github.com/PuerkitoBio/goquery" func GetJokes() { doc,err:=goquery.NewDocument("http://www.qiushibaike.com") if err!=nil{ log.Fatal(err) } doc.Find(".content").Each(func(i int,s *goquery.Selection){ fmt.Println(s.Text()) }) } func main(){ fmt.Println("hello world") GetJokes() } can't load package: C:\Go\src\testapp\ma...阅读全文

Apache的Mesos和Google的Kubernetes 有什么区别?

Apache的Mesos和Google的Kubernetes 有什么区别?本文来自StackOverFlow上的一个问题,主要讨论Mesos和Kubernetes的区别,相信我们很多人也有同意的疑问。 Kubernetes的开发者Craig回答了这个问题,同时masi也做了概述,不一定对,供读者参考。Kubernetes主要针对容器集群,而 Mesos适用于任何的框架和应用,所以Kubernetes可以运行于Mesos上。Kubernetes是一个开源项目,它把谷歌的集群管理工具引入到虚拟机和裸机场景中。它可以完美运行在现代的操作系统环境(比如CoreOS 和Red Hat Atomic),并提供可以被你管控的轻量级的计算节点。Kubernetes使用Golang开发,具有轻量化、模块化、便...阅读全文

日志索引工具 LogZoom

LogZoom 是一个使用 Go 语言开发的轻量级、兼容 Lumberjack 的日志索引工具,支持 Lumberjack v2 协议。 ### 输入 * Filebeat (Lumberjack V2 Protocol) * Redis Message Queue ### 输出 * Redis Message Queue * TCP Streaming * WebSocket Streaming * Elasticsearch * S3 ![LogZoom Basic Diagram](http://static.oschina.net/uploads/img/201604/09151404_mhoK.png) ![LogZoom High Availability ...阅读全文

开源项目 2016-04-08 16:00:00 packetzoom

golang 制作通用爬虫框架

# golang制作爬虫组件 # 一、背景 ​ 自己之前是一个iOS的小工,后来又去后台搬砖。 ​ 一直准备做一个iOS优质文章的聚合,每天定向爬取大V们的博客。所以就萌生了尝试打造一个通用爬虫框架的想法。加上近期开始golang的学习,所以选择使用go来写。 ​ 各章内容总结的比较粗糙,有什么问题,欢迎交流,欢迎各位大佬来喷。 传送门:[julyT](https://github.com/ldaysjun/JulyT) ## 1.1 初识 ​ 我给它起名叫JulyT,目前0.1版本支持Xpath数据解析,批量任务并发。简单的规则编写。就可以完成定向数据的提取. 例如:实现抓取列表,再抓取列表页详情数据,接着翻页继续 ```go func rule(node *Xpath.Node,spid...阅读全文

博文 2018-10-10 22:06:34 ldaysjun

on the go way (一)服务器并发

服务器并发的方式有很多种 1.通过多进程或者多线程的方式,现在这种模式基本上已经不用 2.epoll和IOCP回调的方式,不符合人们的习惯 3.使用协程(轻量级线程,创建、销毁的代价很小),协程在逻辑上上顺序执行 其中属于erlang和golang在协程并发方面做的比较好 package mainimport ( "fmt")func getResult(data []int, res chan int) { var sum int sum = 0 for _, v := range data { sum += v } res <- sum}func main() { var res = make(chan int) var data = []int{1, 2, 3, 4, 5, 6, 7,...阅读全文

博文 2016-03-22 11:00:06 OneDream

Golang练手小项目系列

本系列整理了10个工作量和难度适中的Golang小项目,适合已经掌握Go语法的工程师进一步熟练语法和常用库的用法。golang练手小项目系列(1)-位向量golang练手小项目系列(2)-并发爬虫golang练手小项目系列(3)-并发读取文件夹信息golang练手小项目系列(4)-网络聊天室golang练手小项目系列(5)-并发无阻塞缓...阅读全文

博文 2019-06-29 01:32:41 李说的对

Go语言小爬虫--第一步

解析新浪手机新闻网页,获取5条新的新闻的url存入到数据库 package linksql import ( "database/sql" "log" _"github.com/go-sql-driver/mysql" ) func Open_url_table() *sql.DB{ db,err:=sql.Open("mysql","root:root@/mysql") Checkerror(err) return db } func Insertlink(id int,src string,url string){ db:=Open_url_table() stmt,err1:=db.Prepare("insert into url_table(id,src,url) values(?,...阅读全文

博文 2017-02-10 11:29:24 碰不到繁华

Go 语言的 Web 服务框架Gear-go

Gear 是 Go 语言下的一个轻量级、可组合、高性能的 Web 服务框架。由 [Teambition](https://www.teambition.com/) 开发,用于开发 SOA 服务层。其设计参考了 Go 生态下现有的近十款 Web 框架和 Node.js 生态的 [koa](https://github.com/koajs/koa)、[Toa](https://github.com/toajs/toa) 等框架。 **Demo*...阅读全文

开源项目 2017-02-07 03:17:26 teambition

Go语言初尝

对于语言设计之争, 唯一需要牢记的一句话是: 如果把 C 变成 C++, 那么 C 就消失了。 Go 是一个轻量级的简洁的支持并发的语言, 可以用于探索性个人项目, 这是我想学这门语言的主要原因。 对于有一定编程经验的人来说, 学习一种新语言的方式是, 先概览下语言特性, 然后编写一个中等规模的程序, 尽可能地运用到大部分重要特性。 下面的程序用于计算一个目录下所有文件或目录的大小。 package main import ( "fmt" "time" "os" "log" ) type ShortFileInfo struct { fileName string size int64 } func (fileInfo *ShortFileInfo) Desc() string { retu...阅读全文

博文 2015-06-17 23:01:40 shuqin1984

Python爬虫之处理异常 python进阶

每个程序都不可避免地要进行异常处理,爬虫也不例外,假如不进行异常处理,可能导致爬虫程序直接崩掉。以下是网络爬虫出现的异常种类。 **URLError** 通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生。 **HTTPError** 首先我们要明白服务器上每一个HTTP 应答对象response都包含一个数字“状态码”,该状态码表示HTTP协议所返回的响应的状态,这就是HTTPError。比如当产生“404 Not Found”的时候,便表示“没有找到对应页面”,可能是输错了URL地址,也可能IP被该网站屏蔽了,这时便要使用代理IP进行爬取数据。 **两者关系** 两者是父类与子类的关系,即HTTPError是U...阅读全文

golang写一个简单的爬虫

package main import( "fmt" "io/ioutil" "net/http" ) func gethtml(url string) (r *http.Response, e error){ resp,err := http.Get(url) if err != nil { fmt.Print("error") } return resp,err } func main(){ resp, _ :=gethtml("http://www.baidu.com") defer resp.Body.Close() fmt.Println(resp.StatusCode) if resp.StatusCode==http.StatusOK{ body,err :=ioutil.Re...阅读全文

博文 2018-06-07 15:30:01 c-x-a

什么是网络爬虫?python快速入门

世界上80%的爬虫是基于Python开发的,学好爬虫技能,可为后续的大数据分析、挖掘、机器学习等提供重要的数据源。 **什么是爬虫?** 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据 **爬虫可以做什么?** 你可以用爬虫爬图片,爬取视频等等你想要爬取的数据,只要你能通过浏览器访问的数据都可以通过爬虫获取。 **爬虫的本质是什么?** 模拟浏览器打开网页,获取网页中我们想要的那部分数据 **浏览器打开网页的过程...阅读全文

Python爬虫与Web开发常用库汇总 学python培训

Python爬虫和Web开发均是与网页相关的知识技能,无论是自己搭建的网站还是爬虫爬去别人的网站,都离不开相应的Python库,以下是常用的Python爬虫与Web开发库。 **1.爬虫库** beautifulsoup4、urllib2、lxml和requests是学习Python爬虫必备的库,必须要掌握,当然有的同学说爬网页不是也可以用正则表达式吗,确实可以但是会很不方便,因为bs4和lxml都有便捷的接口,一般我们都是和正则结合使用,如果对速度有要求的话,建议用lmxp,它比bs4 速度要快很多。 **2.Scrapy** 爬虫的世界里面有没有懒人专用的框架,当然有啦,scrapy就是其中比较有名的,可以快速,高层次的web抓取网页,并从web站点的页面中提取结...阅读全文

Python数据爬虫怎么学?python入门教程

现行环境下大数据与人工智能的重要依托还是庞大的数据和分析采集,就如淘宝、京东、百度、腾讯级别的企业能够通过数据可观的用户群体获取需要的数据。而一般企业可能就没有这种通过产品获取数据的能力和条件。因此,利用爬虫,我们可以解决部分数据问题,那么,如何学习Python数据爬虫能? **1. 学习Python基础知识并实现基本的爬虫过程** 一般获取数据的过程都是按照 发送请求-获得页面反馈-解析并且存储数据 这三个流程来实现的。这个过程其实就是模拟了一个人工浏览网页的过程。 Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,我们可以按照requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取数据。 ...阅读全文

基于Golang的HTTP客户端,爬虫工具direwolf

写了一个基于 Golang 的 HTTP 客户端,可以做为爬虫工具。因为用 Golang 发请求的时候发现有些设置很麻烦,所以参考 Python 的 Requests,写了这个工具。 地址: https://wnanbei.github.io/direwolf/ 网站中有完整的中文文档,后续会继续完善和添加新的功能。有兴趣的朋友欢迎在 Gayhub 点个 star,如果有 BUG、问题或者建议,也可以在 Gayhub 的 Issues 页面与我讨论。 以下是部分简单用法的展示: 你可以像下方这样非常简单的发起一个请求: ```go import ( "fmt" dw "github.com/wnanbei/direwolf" ) ...阅读全文

【Go语言实战】字符编码GBK、UTF8转换

近期计划开发一个小说阅读APP,本意是学习golang开发,以及爬虫设计。 一般规范些的站点,会采用utf-8编码开发运行在浏览器上。然而,在我抓取的某些网站,却是采用的GBK编码,因此,在解析dom后,获取中文内容的时候,总是会出现一些编码问题,导致我并不能确认,解析到的内容,是不是就是我想要的,我期望的。 为了解决这个问题,我面向百度,面向goole编程,最终找到了一个可靠的解决办法,即goole的text库(golang.org/x/text),并把对应的方法做了简单的封装。 // transform GBK bytes to UTF-8 bytes func GbkToUtf8(str []byte) (b []byte, err error) { r := transform.Ne...阅读全文

博文 2019-05-20 18:34:41 故不忧_y

Golang爬虫

http.Get出现403错误 原因:http.Get访问url没有携带user-agent 解决: client := &http.Client{} req, err := http.NewRequest("GET", url, nil) if err != nil { log.Printf("Fetcher error: %v", err) } req.Header.Set("User-Agent", `你的user-agent`) resp, err := client.Do(req) if err != nil { log.Printf("Fetcher error: %v", err) } defer resp.Body.Close(...阅读全文

博文 2018-08-11 09:34:59 php_studyer