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
Merhaba,
14. mesajı yeniledim, dener misiniz lütfen.
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
.
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)
-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,
JavaScript:=importhtml(B2;"Table";3)
- 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.
.
O is artik script yazmaya dogru evrilir...
.
Uğraştım ama olmadı ..... sözkonusu sunucu Google Script'ten gelen isteği kabul etmiyor.
.