Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "io"
- "log"
- "net/http"
- "os"
- "strconv"
- "strings"
- "github.com/PuerkitoBio/goquery"
- )
- // Βρες τον αριθμό των σελίδων
- func getPageNumber(page string) int {
- lastPage := 0
- // Request the HTML page.
- res, err := http.Get(page)
- if err != nil {
- log.Fatal(err)
- }
- defer res.Body.Close()
- if res.StatusCode != 200 {
- log.Fatalf("status code error: %d %s", res.StatusCode, res.Status)
- }
- // Load the HTML document
- doc, err := goquery.NewDocumentFromReader(res.Body)
- if err != nil {
- log.Fatal(err)
- }
- doc.Find("body div.eg-container-outer div ul.pagination.pagination-lg.justify-content-center.flex-wrap.m-0.mx-3.pb-4").Each(func(i int, s *goquery.Selection) {
- s.Find("a").Each(func(i int, s *goquery.Selection) {
- link, ok := s.Attr("href")
- if ok {
- title := s.Text()
- if strings.Contains(title, "...") {
- sliceLink := strings.Split(link, "/")
- s := sliceLink[len(sliceLink)-2]
- // string to int
- lastPage, _ = strconv.Atoi(s)
- }
- }
- })
- })
- return lastPage
- }
- func ExampleScrape(page string) {
- // Request the HTML page.
- res, err := http.Get(page)
- if err != nil {
- log.Fatal(err)
- }
- defer res.Body.Close()
- if res.StatusCode != 200 {
- log.Fatalf("status code error: %d %s", res.StatusCode, res.Status)
- }
- // Load the HTML document
- doc, err := goquery.NewDocumentFromReader(res.Body)
- if err != nil {
- log.Fatal(err)
- }
- doc.Find("body div.eg-container-outer div.eg-container ul.eg-list").Each(func(i int, s *goquery.Selection) {
- s.Find("a").Each(func(i int, s *goquery.Selection) {
- link, ok := s.Attr("href")
- if ok {
- title := s.Text()
- fmt.Printf("%s [%s]\n", title, link)
- }
- })
- })
- }
- func GetDownloadLink(page string) {
- // Request the HTML page.
- res, err := http.Get(page)
- if err != nil {
- log.Fatal(err)
- }
- defer res.Body.Close()
- if res.StatusCode != 200 {
- log.Fatalf("status code error: %d %s", res.StatusCode, res.Status)
- }
- // Load the HTML document
- doc, err := goquery.NewDocumentFromReader(res.Body)
- if err != nil {
- log.Fatal(err)
- }
- doc.Find("body div.eg-container.pt-0.pt-sm-3 div.eg-expand.row div.col-md-12.col-lg-4.px-3.mb-3").Each(func(i int, s *goquery.Selection) {
- // test, _ := s.Find("div.col-md-12.col-lg-4.px-3.mb-3").Html()
- //fmt.Println(s.Html())
- action, err := s.Html()
- if err == nil {
- println("Works" + action)
- sliceLink := strings.Split(action, "=")
- println(sliceLink[1])
- }
- })
- }
- func downloadFile(filepath string, url string) (err error) {
- // Create the file
- out, err := os.Create(filepath)
- if err != nil {
- return err
- }
- defer out.Close()
- // Get the data
- resp, err := http.Get(url)
- if err != nil {
- return err
- }
- defer resp.Body.Close()
- // Writer the body to file
- _, err = io.Copy(out, resp.Body)
- if err != nil {
- return err
- }
- return nil
- }
- func main() {
- // page := "https://www.emulatorgames.net/roms/gameboy/"
- // var link string
- // lastpage := getPageNumber(page)
- // for i := 1; i <= lastpage; i++ {
- // if i == 1 {
- // link = "https://www.emulatorgames.net/roms/gameboy/"
- // } else {
- // link = fmt.Sprintf("%s%d/", page, i)
- // }
- // ExampleScrape(link)
- // }
- // Get the download link:
- GetDownloadLink("https://www.emulatorgames.net/roms/gameboy/gb-pachislot-hissyouhou-jr/")
- // Download
- // var filename string = "urls.zip"
- // var url1 string = "https://static.emulatorgames.net/roms/gameboy/Akumajou Dracula - Shikkokutaru Zensoukyoku (J) [S][!].zip"
- //downloadFile(filename, url1)
- }
Add Comment
Please, Sign In to add comment