Ben kesinlikle teknolojinin gerisinde kalalım demiyorum. Ama kendimde bu eksikliği hissettim. Önceden bir konu hakkında kafa yorarken şimdi ne düşünüyorumki yapay zekaya sorayım gitsin diyorum. Umarım beni yanıltır.
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Merhaba,... Aynı zamanda başka yapay zekaları da aktif olarak kullanıyorum.
Ben de bunu soracaktım. Excelde makroları chatgpt başarılı şekilde yazıyor. Diğer denediklerim maalesef pek başarılı olamadı. Önereceğiniz başka hangileri var?Merhaba,
Aktif olarak kullandığınız diğer yapay zekalar hangileri?
Cevabı:@https://www.hdfilmcehennemi.nl/
bu sitedeki film isimlerini, afiş resimlerini alan excel için vba kodunu yaz. Film isimleri sütunlara yazılsın ve yanındaki sütunda poster resimleri olsun. satır genişlikleri sabit olsun 80 px gibi. film isimleri dikey ortalı olsun. modern ve şık bir tasarım yap.
Bu kodu kullanmak için:
- Excel'de Visual Basic Editor'ü açın (Alt + F11)
- Yeni bir modül ekleyin (Insert > Module)
- Yukarıdaki kodu yapıştırın
- Gerekli referansları ekleyin:
- Tools > References
- "Microsoft HTML Object Library"yi seçin
- "Microsoft XML"i seçin
- Kodu çalıştırın (F5)
Kod şunları yapacak:
- Web sitesinden film verilerini çeker
- Her film için:
- Film adını
- Poster URL'sini
- IMDB puanını
- Yılını alır
- Verileri Excel'e yazar
- Poster resimlerini indirir ve Excel'e ekler
Notlar:
- İnternet bağlantınızın olması gerekir
- Sitenin yapısı değişirse kod güncellenmelidir
- Bazı güvenlik ayarları nedeniyle resim indirme işlemi çalışmayabilir
Güvenlik uyarısı:
Bu tür web scraping işlemleri için sitenin kullanım koşullarını kontrol etmeniz ve yasal sınırlar içinde kalmanız önemlidir.
Sub FilmleriCek()
Dim xhr As Object
Dim html As Object
Dim filmElements As Object
Dim film As Object
Dim row As Long
Dim ws As Worksheet
' Excel sayfasını ayarla
Set ws = ThisWorkbook.ActiveSheet
ws.Cells.Clear
' Sayfa arka plan rengini ayarla
ws.Cells.Interior.Color = RGB(245, 245, 245)
' Başlıkları ekle
ws.Cells(1, 1) = "Film Adı"
ws.Cells(1, 2) = "Poster"
ws.Cells(1, 3) = "IMDB"
ws.Cells(1, 4) = "Yıl"
' Başlıkları formatla
With ws.Range("A1:D1")
.Font.Bold = True
.Font.Size = 12
.Font.Name = "Calibri"
.Interior.Color = RGB(51, 51, 51)
.Font.Color = RGB(255, 255, 255)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.RowHeight = 30
End With
' Sütun genişliklerini ayarla
ws.Columns("A").ColumnWidth = 40
ws.Columns("B").ColumnWidth = 12
ws.Columns("C").ColumnWidth = 10
ws.Columns("D").ColumnWidth = 10
' XMLHTTP nesnesi oluştur
Set xhr = CreateObject("MSXML2.XMLHTTP")
' Web sitesine istek gönder
With xhr
.Open "GET", "https://www.hdfilmcehennemi.nl/", False
.setRequestHeader "User-Agent", "Mozilla/5.0"
.send
End With
' HTML parser oluştur
Set html = CreateObject("htmlfile")
html.body.innerHTML = xhr.responseText
' Film elementlerini seç
Set filmElements = html.getElementsByClassName("poster")
' Başlangıç satırı
row = 2
' Her film için döngü
For Each film In filmElements
Dim filmAdi As String
Dim posterURL As String
Dim imdbPuan As String
Dim filmYil As String
' Film adını al
On Error Resume Next
filmAdi = film.getAttribute("title")
' Poster URL'sini al
Dim imgElement As Object
Set imgElement = film.getElementsByTagName("img")(0)
If Not imgElement Is Nothing Then
posterURL = imgElement.getAttribute("data-src")
If posterURL = "" Then
posterURL = imgElement.getAttribute("src")
End If
End If
' IMDB puanını al
Dim imdbSpan As Object
Set imdbSpan = film.getElementsByClassName("imdb")(0)
If Not imdbSpan Is Nothing Then
imdbPuan = Replace(imdbSpan.innerText, "IMDB:", "")
End If
' Yılı al
Dim metaDiv As Object
Set metaDiv = film.getElementsByClassName("poster-meta")(0)
If Not metaDiv Is Nothing Then
For Each span In metaDiv.getElementsByTagName("span")
If IsNumeric(span.innerText) Then
filmYil = span.innerText
Exit For
End If
Next span
End If
' Verileri Excel'e yaz
If filmAdi <> "" Then
' Film adını yaz ve formatla
With ws.Cells(row, 1)
.Value = filmAdi
.Font.Name = "Calibri"
.Font.Size = 11
.VerticalAlignment = xlCenter
.Interior.Color = RGB(255, 255, 255)
End With
' IMDB puanını yaz
With ws.Cells(row, 3)
.Value = imdbPuan
.Font.Name = "Calibri"
.Font.Size = 11
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Interior.Color = RGB(255, 255, 255)
End With
' Yılı yaz
With ws.Cells(row, 4)
.Value = filmYil
.Font.Name = "Calibri"
.Font.Size = 11
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Interior.Color = RGB(255, 255, 255)
End With
' Poster resmini ekle
If posterURL <> "" Then
On Error Resume Next
With ws.Shapes.AddPicture( _
DownloadImage(posterURL), _
False, True, _
ws.Cells(row, 2).Left + 5, _
ws.Cells(row, 2).Top + 5, _
80, 100)
End With
On Error GoTo 0
End If
' Satır yüksekliğini ayarla
ws.Rows(row).RowHeight = 80
' Hücre çerçevelerini ayarla
ws.Range(ws.Cells(row, 1), ws.Cells(row, 4)).Borders.LineStyle = xlContinuous
ws.Range(ws.Cells(row, 1), ws.Cells(row, 4)).Borders.Color = RGB(200, 200, 200)
row = row + 1
End If
Next film
' Alternatif satır renklendirmesi
For i = 2 To row - 1 Step 2
ws.Range(ws.Cells(i, 1), ws.Cells(i, 4)).Interior.Color = RGB(250, 250, 250)
Next i
MsgBox "Film verileri başarıyla çekildi!", vbInformation
End Sub
Private Function DownloadImage(ByVal imageUrl As String) As String
' Resmi geçici klasöre indir
Dim tempPath As String
tempPath = Environ$("TEMP") & "\" & CreateGuid() & ".jpg"
Dim xhr As Object
Set xhr = CreateObject("MSXML2.XMLHTTP")
With xhr
.Open "GET", imageUrl, False
.send
End With
If xhr.Status = 200 Then
Dim stream As Object
Set stream = CreateObject("ADODB.Stream")
With stream
.Type = 1 'Binary
.Open
.Write xhr.responseBody
.SaveToFile tempPath, 2 'Overwrite
.Close
End With
End If
DownloadImage = tempPath
End Function
Private Function CreateGuid() As String
CreateGuid = Format(Now, "yyyymmddhhnnss") & "-" & Int(Rnd * 1000000)
End Function