# #go
Вопрос:
Я новичок в Golang и разрабатываю программу очистки веб-страниц. Прошлой ночью я запускал свои программы, и все было в порядке. Мои программы запускались как из исходного кода, используя «go run xyz.go», так и встроенную версию ($ ./xyz.exe)
Этим утром я проснулся с очевидной проблемой сломанной зависимости, которую мне не удалось выяснить. Встроенная программа (./xyz.exe) со вчерашнего вечера все еще работает, но когда я пытаюсь запустить исходный код сегодня, используя «go run xyz.go», я получаю следующий результат:
«$ иди, запускай xyz.иди
иди строй golang.org/x/text/encoding: нет файлов, не являющихся тестовыми, в C:UsersadminDropboxgoworkpkgmodgolang.orgxtext@v0.3.7encoding
иди строй golang.org/x/text/transform: нет файлов, не являющихся тестовыми, в C:UsersadminDropboxgoworkpkgmodgolang.orgxtext@v0.3.7transform
golang.org/x/net/html/atom
……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:27:26: неопределенные: atomText ……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:30:9: неопределенные: atomText ……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:34:9: неопределенные: atomText ……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:58:29: неопределенные: maxAtomLen ……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:61:11: неопределенные: hash0 ……..pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:62:10: не определено: таблица ……….. pkgmodgolang.orgxnet@v0.0.0-20210916014120-12bc252f5db8htmlatomatom.go:65:10: не определено: таблица
github.com/andybalholm/cascadia
……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:10:9: неопределенные: tagSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:14:9: неопределенные: idSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:18:9: неопределенные: classSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:22:9: неопределенные: attrSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:32:9: неопределенные: relativePseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:35:9: неопределенные: containsPseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:42:9: неопределенные: regexpPseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:49:9: неопределенные: nthPseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:75:9: неопределенные: onlyChildPseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:81:9: неопределенные: inputPseudoClassSelector ……..pkgmodgithub.comandybalholmcascadia@v1.2.0serialize.go:81:9: слишком много ошибок
golang.org/x/text/internal/language
……..pkgmodgolang.orgxtext@v0.3.7internallanguagecompact.go:12:23: неопределенные: бирка ……..pkgmodgolang.orgxtext@v0.3.7internallanguagecompact.go:23:32: неопределенные: бирка ……..pkgmodgolang.orgxtext@v0.3.7internallanguagecompose.go:15:6: неопределенные: бирка ……..pkgmodgolang.orgxtext@v0.3.7internallanguagecompose.go:23:26: неопределенные: бирка ……..pkgmodgolang.orgxtext@v0.3.7internallanguagecompose.go:56:28: неопределенные: бирка ……..pkgmodgolang.orgxtext@v0.3.7internallanguagecoverage.go:9:24: неопределенная язык ……..pkgmodgolang.orgxtext@v0.3.7internallanguagematch.go:17:10: не определено: Тег ……… pkgmodgolang.orgxtext@v0.3.7internallanguagematch.go:17:35: не определено: Язык ………. pkgmodgolang.orgxtext@v0.3.7internallanguagematch.go:23:10: не определено: Тег ……. pkgmodgolang.orgxtext@v0.3.7internallanguagematch.go:23:37: не определено: Сценарий …….. pkgmodgolang.orgxtext@v0.3.7internallanguagematch.go:23:37: слишком много ошибок»
Я попытался решить эту проблему, обновившись до последней версии Golang. Не уверен, что от этого стало только хуже.
Я использую пакет encoding/csv. Моя IDE-это визуальный код Sudio. Вот мой код:
package main
import (
"encoding/csv" // Problem seems to be with this package
"fmt"
"log"
"net"
"net/http"
"os"
"strings"
"time"
"github.com/gocolly/colly"
)
func main() {
fName := "FOOT-live-data.csv"
file, err := os.OpenFile(fName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatalf("No se pudo crear archivo, error: %q", err)
return
}
defer file.Close()
writer := csv.NewWriter(file) // Package encoding/csv is used here
defer writer.Flush()
liga := ""
start := time.Now()
cons := 0
eventodds := make([]string, 3, 5)
var data [][]string
c := colly.NewCollector()
c.OnHTML(`div#USInplay-tab-FOOT div.table-row.row-wrap`, func(e *colly.HTMLElement) {
if e.DOM.Children().Length() == 1 {
if liga != e.ChildText(`div.ev-type-header`) {
liga = e.ChildText(`div.ev-type-header`)
}
} else {
cons = cons 1
timestamp := time.Now().Round(time.Second)
eventid := e.Attr("data-mkt_id")
eventinfo := strings.Split(e.ChildText(`div[class="team-score"]`), "n")
eventtime := e.ChildText(`span.clock_mode_forward`)
eventperiod := e.ChildText(`span.period`)
e.ForEach(`div.inplay td.seln`, func(i int, elem *colly.HTMLElement) {
eventodds[i] = elem.ChildText(`span.dec`)
})
data = append(data, []string{
timestamp.Format(time.RubyDate),
"WPlay",
liga,
eventid,
eventinfo[1] " - " eventinfo[4],
eventinfo[0] "-" eventinfo[3],
eventtime,
eventperiod,
eventodds[0],
eventodds[1],
eventodds[2],
})
}
})
c.Visit("https://apuestas.wplay.co/es")
writer.WriteAll(data)
log.Printf("Scraping finished, check file %q for resultsn", fName)
secs := time.Since(start).Seconds()
fmt.Printf("Tiempo total: %v segs", secs)
}
Комментарии:
1. Не используй
go run
— используйgo build
2. Спасибо. Проблема была не в этом. Проблема заключалась в моем неуклюжем и необразованном использовании Github. Пожалуйста, ознакомьтесь с моим собственным ответом ниже.
Ответ №1:
Мне удалось разобраться в этой странной ситуации! Я раздумывал, удалить ли мой глупый вопрос или ответить на него самому, чтобы помочь кому-то другому в подобной ситуации. Я решил укусить публику за насмешку и ответить на нее сам.
Проблема действительно была связана с нарушенной зависимостью, но не с пакетом кодирования. Основная причина проблемы-мое неуклюжее использование Github.
Я работаю в основном на этом компьютере, и я создал представителя Github, чтобы сохранить свою работу и воспроизвести ее еще на двух компьютерах, одном ноутбуке для дороги и старом Mac.
Действительно, пару недель назад я был в командировке и однажды вечером работал над своим проектом. У меня возникли проблемы с пакетом Colly на ЭТОМ компьютере, поэтому я удалил его из папок src и pkg, которые синхронизированы с представителем Github. Затем механически и «без нейронов» я синхронизировал свою работу с Github, как я всегда делаю в конце своего путешествия.
Вернувшись к своему обычному компьютеру, я выполнил еще кое-какую работу и синхронизировался со своим представителем Guthub. Когда я получил предупреждение о том, чтобы не «подталкивать» мою работу перед «вытаскиванием» или игнорированием последней версии от представителя Github, я не задумывался об этом, прежде чем «вытащить» сначала из представителя.
Бум! Удаленная папка Colly с моего ноутбука на дороге попала в эту машину через Github. Это привело к беспорядку в моей папке Colly на этой машине, которую я все еще пытаюсь распутать.
Я также понял, что нет смысла синхронизировать папки bin, pkg и src с Github, поскольку только последняя содержит нужный вам код, а две другие заполняются локально, если содержимое не существует; они специфичны для машины и архитектуры, над которой вы работаете. Что, я теперь почти уверен, в первую очередь создало проблему на моем ноутбуке.
Это подтверждает поговорку о том, что вы больше учитесь на своих ошибках, чем на своих успехах!
Еще раз приношу свои извинения за то, что опубликовал вопрос, не исчерпав все до последнего ресурса. Я надеюсь, что заключение этого будет полезным.