3.3.1 Response 定义
3.3.2 Response 提供的一些public方法
func NewResponse(req *Request) *Response {
}
// 使用前的初始化工作
func (self *Response) Prepare(resp *http.Response, req *Request) *Response {
}
// GetError test whether download process success or not.
func (self *Response) GetError() error {
return self.err
}
// SetError save err about download process.
func (self *Response) SetError(err error) {
self.err = err
}
// AddItem saves KV string pair to Response.Items preparing for Pipeline
func (self *Response) AddItem(data map[string]interface{}) {
self.items = append(self.items, data)
}
func (self *Response) GetItem(idx int) map[string]interface{} {
return self.items[idx]
}
func (self *Response) GetItems() []map[string]interface{} {
return self.items
}
// AddFile saves to Response.Files preparing for Pipeline
func (self *Response) GetFile(idx int) map[string]interface{} {
return self.files[idx]
}
func (self *Response) GetFiles() []map[string]interface{} {
return self.files
}
// GetRequest returns request oject of self page.
func (self *Response) GetRequest() *Request {
return self.Request
}
func (self *Response) GetHost() string {
return self.Response.Request.URL.Host
}
func (self *Response) GetResponseHeader() http.Header {
return self.Response.Header
}
func (self *Response) GetRequestHeader() http.Header {
return self.Response.Request.Header
}
func (self *Response) GetReferer() string {
return self.Response.Request.Header.Get("Referer")
}
// 自定义设置输出结果的"上级链接"字段
func (self *Response) SetReferer(referer string) *Response {
}
// GetHtmlParser returns goquery object binded to target crawl result.
func (self *Response) GetDom() *goquery.Document {
if self.dom == nil {
self.initDom()
}
return self.dom
}
// GetHtmlParser returns goquery object binded to target crawl result.
func (self *Response) initDom() *goquery.Document {
r := strings.NewReader(self.GetText())
var err error
self.dom, err = goquery.NewDocumentFromReader(r)
if err != nil {
logs.Log.Error("%v", err)
panic(err.Error())
}
return self.dom
}
// GetBodyStr returns plain string crawled.
func (self *Response) GetText() string {
if self.text == "" {
self.initText()
}
return self.text
}
func (self *Response) ResetText(body string) *Response {
self.text = body
self.dom = nil
}