这是我的代码(部分代码):
type SitemapIndex struct {
// Locations []Location `xml:"sitemap"`
Locations []string `xml:"sitemap>loc"`
}
~~~ SNIP ~~~
func main(){
var s SitemapIndex
resp, _ := http.Get("https://www.washingtonpost.com/news-sitemaps/index.xml")
bytes, _ := ioutil.ReadAll(resp.Body)
xml.Unmarshal(bytes, &s)
for _, Location := range s.Locations {
fmt.Printf("%s\n", Location)
resp, err := http.Get(Location)
if err != nil {
log.Fatal(err)
} else {
bytes, _ := ioutil.ReadAll(resp.Body)
xml.Unmarshal(bytes, &n)
for idx := range n.Titles {
newsMap[n.Titles[idx]] = NewsMap{n.Keywords[idx], n.Locations[idx]}
}
}
for idx, data := range newsMap {
fmt.Println("\n\n\n", idx)
fmt.Println("\n", data.Keyword)
fmt.Println("\n", data.Location)
}
}
现在,当我运行此代码时,我得到以下输出:
https://www.washingtonpost.com/news-sitemaps/politics.xml
2019/01/28 02:37:13 parse
https://www.washingtonpost.com/news-sitemaps/politics.xml
: first path segment in URL cannot contain colon
exit status 1
我阅读了几篇文章,并做了一些实验,就像我用下面的代码制作了另一个文件
package main
import ("fmt"
"net/url")
func main(){
fmt.Println(url.Parse("https://www.washingtonpost.com/news-sitemaps/politics.xml"))
}
它并没有引发任何错误,所以我知道该错误与URL无关。
现在,几个小时前,我才开始使用senddex的教程学习 Go ,因此到目前为止,您的想法并不多。这是video link
感谢和问候。 临时的
答案 0 :(得分:3)
这里的问题是GET
具有空格前缀和后缀,因此字符串不是有效的URL。不幸的是,错误消息并不能帮助您看到这一点。
如何检测:
我通常使用%q let john = {
firstName: "John",
lastName: "Doe",
};
let people = new Array(10).fill().map((e, i) => {
return {
...john,
id: i
}
});
帮助程序,该帮助程序将字符串包装在括号中:
Location
将打印为“ \ nhttps://www.washingtonpost.com/news-sitemaps/politics.xml \ n”
如何解决:
在代码中使用“位置”之前添加此行:
fmt