模拟网站下fetcher的内容和视频不一样

来源:15-6 测试CityListParser

AdamCorleone

2021-07-12

{"Time":"2021-07-12T20:28:13.3840733+08:00","Action":"run","Test":"TestParserCit
yList"}
{"Time":"2021-07-12T20:28:13.3968134+08:00","Action":"output","Test":"TestParser
CityList","Output":"=== RUN   TestParserCityList\n"}
{"Time":"2021-07-12T20:28:13.9547502+08:00","Action":"output","Test":"TestParser
CityList","Output":"iv\u003e\u003c/div\u003e\u003c/div\u003e \u003carticle class
=\"g-container\" style=\"display:;\" data-v-1573aa7c\u003e\u003cdiv class=\"memb
er-list\" data-v-1573aa7c\u003e\u003cdiv class=\"list-wrapper\" data-v-1573aa7c\
u003e\u003ch2 class=\"member-title\" data-v-1573aa7c\u003e最新女士征婚\u003c/h2\
u003e \u003cdiv class=\"left-wrapper\" data-v-1573aa7c\u003e\u003cdiv class=\"li
st-item\" data-v-1573aa7c\u003e\u003ca href=\"http://album.zhenai.com/u/10756291
8\" target=\"_blank\" data-v-1573aa7c\u003e\u003cimg src=\"https://photo.zastati
c.com/images/photo/26891/107562918/59701104276917162.jpg?scrop=1\u0026amp;crop=1
\u0026amp;w=50\u0026amp;h=50\u0026amp;cpos=north\" class=\"small-img\" data-v-15
73aa7c\u003e\u003c/a\u003e \u003cdiv class=\"item-info\" data-v-1573aa7c\u003e\u
003cp class=\"nick-name\" data-v-1573aa7c\u003e简单点\u003c/p\u003e \u003cp clas
s=\"introduce-content\" data-v-1573aa7c\u003e大家好!来到这里都需要认真对待,都
希望能遇到自己喜欢的,我是奔结婚去的,真诚比什么都重要,我不求大富大贵,只想简单
一点诚心诚意对待这才是我想要的,简简单单就足够了,希望遇见对的他,相互喜欢才最重
要,我真的希望2021年自"}

我的代码是这样的:

func TestParserCityList(t *testing.T) {
	contents, err := fetcher.Fetcher("http://www.zhenai.com/zhenghun")
	//contents, err := ioutil.ReadFile("citylist_test_data.html")
	if err != nil {
		panic(err)
	}
	fmt.Printf("%s\n",contents)

fetcher的代码为

func Fetcher(url string) ([]byte,error ) {
	resp, err := http.Get(url)
	if err != nil {
		return nil,err
	}

	defer  resp.Body.Close()

	if resp.StatusCode != http.StatusOK {
		fmt.Println("Error:status code ",resp.StatusCode)
		return nil,fmt.Errorf("wrong status code: %d",resp.StatusCode)
	}
	//bodyReader := bufio.NewReader(resp.Body)
	//bodyReader := bufio.NewReader(r).

	e := determineEncoding(resp.Body)

	utf8Reader := transform.NewReader(resp.Body,e.NewDecoder())

	return ioutil.ReadAll(utf8Reader)

}

func determineEncoding(r io.Reader) encoding.Encoding{
	bytes, err := bufio.NewReader(r).Peek(1024)
	if err != nil {
		log.Printf("Fetcher error: %v ",err)
		return unicode.UTF8
	}
	e, _, _ := charset.DetermineEncoding(bytes, "")
	return e
}
写回答

1回答

ccmouse

2021-07-19

能否具体描述下哪里不一样?我们确保对问题的理解是一致的

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程