erd5334
Altın Üye
- Katılım
- 26 Nisan 2012
- Mesajlar
- 123
- Excel Vers. ve Dili
- excel 365
- Altın Üyelik Bitiş Tarihi
- 01-12-2026
hocam mirrors ve edit bilgilerini ne amaçla kullanacaksınız.Evet hocam. en üstte birkez yazması yeterli
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
hocam mirrors ve edit bilgilerini ne amaçla kullanacaksınız.Evet hocam. en üstte birkez yazması yeterli
İlgili kitapların tamamını çekti hocam, çok teşekkür ederim.Merhaba,
14. mesajı yeniledim, dener misiniz lütfen.
Haluk bey bu kodları google sheeet için dönüştürebilir miyiz ?Aslında Selenium kullanmaya gerek yok.
Aşağıdaki kodda görüldüğü gibi, XMLHTTP nesnesini kullanarak GET metoduyla bütün veriler alınabiliyor.....
.C#:Sub getData() 'Haluk - 18/09/2022 Dim strCriteria As String, url As String Dim objHTTP As XMLHTTP, HTMLfile As HTMLDocument Dim countLoop As Integer, k As Integer, i As Integer, j As Integer, iRow As Integer Dim countPages As Double, temp As Double Dim myTable As Object Range("A1:I1") = Array("ID", "Author(s)", "Title", "Publisher", "Year", "Pages", "Language", "Size", "Extension") Range("A2:I" & Rows.Count).ClearContents strCriteria = InputBox("Arama kriterini girin!", "Kriter") If strCriteria = "" Then Exit Sub strCriteria = URL_Encode(strCriteria) url = "https://libgen.is/search.php?&res=100&req=" & strCriteria & "&phrase=1&view=simple&column=def&sort=def&sortmode=ASC" Set objHTTP = New XMLHTTP objHTTP.Open "GET", url, False objHTTP.send Set HTMLfile = CreateObject("HTMLfile") If objHTTP.ReadyState = 4 Then If objHTTP.Status = 404 Then With CreateObject("HTMLfile") .write objHTTP.responseText MsgBox .Title End With MsgBox "Sayfa bulunamadı .... Program sonlandırılacak" GoTo SafeExit: End If If objHTTP.Status = 403 Then With CreateObject("HTMLfile") .write objHTTP.responseText MsgBox .Title End With MsgBox "IP adresiniz yasaklandı .... Program sonlandırılacak" GoTo SafeExit: End If If objHTTP.Status = 200 Then HTMLfile.body.innerHTML = objHTTP.responseText Set myTable = HTMLfile.getElementsByTagName("table")(1) countPages = Split(myTable.Rows(0).Cells(0).innerText)(0) temp = countPages / 100 - Fix(countPages / 100) countLoop = IIf(temp > 0, Int(countPages / 100) + 1, countPages / 100) url = "https://libgen.is/search.php?&res=100&req=" & strCriteria & "&phrase=1&view=simple&column=def&sort=def&sortmode=ASC&page=" iRow = 1 For k = 1 To countLoop url = url & k objHTTP.Open "GET", url, False objHTTP.send If objHTTP.Status = 200 Then Set myTable = HTMLfile.getElementsByTagName("table")(2) For i = 1 To myTable.Rows.Length - 1 iRow = iRow + 1 For j = 0 To myTable.Rows(i).Cells.Length - 1 Cells(iRow, j + 1) = myTable.Rows(i).Cells(j).innerText Next Next End If Next End If End If Columns("J:M").Delete Columns("C:C").ColumnWidth = 44 Cells.RowHeight = 15 SafeExit: Set objHTTP = Nothing Set HTMLfile = Nothing Set myTable = Nothing End Sub ' Function URL_Encode(strText) 'Zeki Gürsoy - 10/01/2021 'https://zekigursoy.blogspot.com Dim objHtmlfile As Object If objHtmlfile Is Nothing Then Set objHtmlfile = CreateObject("HTMLFILE") objHtmlfile.parentWindow.execScript "function encode(s) {return encodeURIComponent(s);}", "JScript" End If URL_Encode = objHtmlfile.parentWindow.encode(strText) End Function
Yaptım fakat sadece ilk sayfaları alabiliyorum, diğer sayfalarda sorun oluyor. Basit birşeyse müsait olduğunuzda paylaşabilirseniz çok sevinirim.Script yerine formülle çözülebilir...
Bunun için VBA kodundaki URL bilgisini kullanarak IMPORTHTML fonksiyonuyla verileri alabilirsiniz. Formülü kullanırken, 3. tabloyu refere edeceksiniz.
.
="https://libgen.is/search.php?&res=100&req=" & B1 & "&phrase=1&view=simple&column=def&sort=def&sortmode=ASC&page=" & C1
=importhtml(B2;"Table";3)
Arattığım kriterden sayfa sayısını hesaplatıp tüm sayfaları alt alta çektirebilir miyiz Haluk bey ?-B1 hücresine arama kriterini yazın, örnek olarak water
-C1 hücresine kaçıncı sayfayı görüntülemek istediğinizi yazın, örnek olarak 1
-B2 hücresine URL'i oluşturmak için aşağıdaki formülü yazın,
JavaScript:="https://libgen.is/search.php?&res=100&req=" & B1 & "&phrase=1&view=simple&column=def&sort=def&sortmode=ASC&page=" & C1
- Verileri almak için B3 hücresine aşağıdaki formülü yazın,
- Diğer sayfalardaki sonuçlar için C1 hücresine istediğiniz sayfa numarasını yazın... Başka arama kriterleri için B1 hücresini kullanın, başlangıç sayfası için C1 hücresinde 1 yazın.JavaScript:=importhtml(B2;"Table";3)
.
Müsait olduğunuzda bakabilirseniz çok sevinirim Haluk bey. Vakit buldukça sizin yazdığınız kodları inceliyorum, umarım ileride sizin bilgi seviyenize kadar gelip excel konusunda üyelerimize yardımcı olabilirim.O is artik script yazmaya dogru evrilir...
.
Çok teşekkür ederim Haluk beyUğraştım ama olmadı ..... sözkonusu sunucu Google Script'ten gelen isteği kabul etmiyor.
.