3.3.1 Response 定义

    3.3.2 Response 提供的一些public方法

    1. func NewResponse(req *Request) *Response {
    2. }
    3. // 使用前的初始化工作
    4. func (self *Response) Prepare(resp *http.Response, req *Request) *Response {
    5. }
    6. // GetError test whether download process success or not.
    7. func (self *Response) GetError() error {
    8. return self.err
    9. }
    10. // SetError save err about download process.
    11. func (self *Response) SetError(err error) {
    12. self.err = err
    13. }
    14. // AddItem saves KV string pair to Response.Items preparing for Pipeline
    15. func (self *Response) AddItem(data map[string]interface{}) {
    16. self.items = append(self.items, data)
    17. }
    18. func (self *Response) GetItem(idx int) map[string]interface{} {
    19. return self.items[idx]
    20. }
    21. func (self *Response) GetItems() []map[string]interface{} {
    22. return self.items
    23. }
    24. // AddFile saves to Response.Files preparing for Pipeline
    25. func (self *Response) GetFile(idx int) map[string]interface{} {
    26. return self.files[idx]
    27. }
    28. func (self *Response) GetFiles() []map[string]interface{} {
    29. return self.files
    30. }
    31. // GetRequest returns request oject of self page.
    32. func (self *Response) GetRequest() *Request {
    33. return self.Request
    34. }
    35. func (self *Response) GetHost() string {
    36. return self.Response.Request.URL.Host
    37. }
    38. func (self *Response) GetResponseHeader() http.Header {
    39. return self.Response.Header
    40. }
    41. func (self *Response) GetRequestHeader() http.Header {
    42. return self.Response.Request.Header
    43. }
    44. func (self *Response) GetReferer() string {
    45. return self.Response.Request.Header.Get("Referer")
    46. }
    47. // 自定义设置输出结果的"上级链接"字段
    48. func (self *Response) SetReferer(referer string) *Response {
    49. }
    50. // GetHtmlParser returns goquery object binded to target crawl result.
    51. func (self *Response) GetDom() *goquery.Document {
    52. if self.dom == nil {
    53. self.initDom()
    54. }
    55. return self.dom
    56. }
    57. // GetHtmlParser returns goquery object binded to target crawl result.
    58. func (self *Response) initDom() *goquery.Document {
    59. r := strings.NewReader(self.GetText())
    60. var err error
    61. self.dom, err = goquery.NewDocumentFromReader(r)
    62. if err != nil {
    63. logs.Log.Error("%v", err)
    64. panic(err.Error())
    65. }
    66. return self.dom
    67. }
    68. // GetBodyStr returns plain string crawled.
    69. func (self *Response) GetText() string {
    70. if self.text == "" {
    71. self.initText()
    72. }
    73. return self.text
    74. }
    75. func (self *Response) ResetText(body string) *Response {
    76. self.text = body
    77. self.dom = nil
    78. }