guice11
Messages postés52Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention17 décembre 2009
-
26 juil. 2009 à 19:11
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
28 juil. 2009 à 21:02
Je fais une bedetheque qui recherche des infos sur un site en particulier et j'aimerais afficher le signe plus dans une série (ex : Tintin, Astérix, Carmen+Travis). J'arrive a afficher Tintin, Astérix mais pas Carmen+Travis, ca fais Carmen Travis. Voici le code (il faut s'occuper de Value1, la Value2 n'est pas utile) :
Sub Lettre ()
Me.Cursor = Cursors.WaitCursor
Dim NomFilm As String
NomFilm = Me.TbSearch.Text
Try
Dim request As WebRequest = WebRequest.Create("http://www.bedetheque.com/bandes_dessinees_" & Lettre & ".html")
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream, Encoding.UTF7)
Dim responseFromServer As String = reader.ReadToEnd()
Me.RtHtmlData.Text = responseFromServer
reader.Close()
dataStream.Close()
response.Close()
Me.LvResults.Items.Clear()
Dim result As String
result = Me.RtHtmlData.Text
Dim Pattern As String
Pattern = "[ (.+?)]"
Dim Pattern1 As String
Pattern1 = "[ (.+?)]"
Dim rx As New Text.RegularExpressions.Regex(Pattern, RegexOptions.IgnoreCase)
Dim rx1 As New Text.RegularExpressions.Regex(Pattern1, RegexOptions.IgnoreCase)
Dim matches As MatchCollection = rx.Matches(result)
Dim matches1 As MatchCollection = rx1.Matches(result)
If matches.Count.ToString = 0 Then
MsgBox("Aucun film trouvé. Veuillez étendre votre requête.", MsgBoxStyle.Information, "Film - Ty")
Me.Cursor = Cursors.Default
Exit Sub
End If
Dim guillement As String = """"
If matches.Count.ToString = 1 Then
Dim Value1Result As String = matches.Item(0).Value.ToString
If matches1.Count.ToString = 0 Then
Value2Result = "ND"
Else
Value2Result = matches1.Item(0).Value.ToString
End If
Dim MaRegex As New System.Text.RegularExpressions.Regex("")
Dim Value1 As String
Value1 = System.Text.RegularExpressions.Regex.Replace(Value1Result, "(<[^>]+>)", "")
Value1 = Value1.Replace("&", "&")
Value1 = Value1.Replace("x9C", "?")
Value1 = Value1.Replace(""", "f")
Dim Value2 As String
Value2 = System.Text.RegularExpressions.Regex.Replace(Value2Result, "(<[^>]+>)", "")
Dim item1 As New ListViewItem(1)
item1.SubItems.Add(Value1)
item1.SubItems.Add(Value2)
Me.LvResults.Items.AddRange(New ListViewItem() {item1})
Else
For i As Short = 0 To matches.Count.ToString - 1
Dim MaRegex As New System.Text.RegularExpressions.Regex("")
Dim Value1 As String
Value1 = System.Text.RegularExpressions.Regex.Replace(matches(i).Value, "(<[^>]+>)", "")
Value1 = System.Text.RegularExpressions.Regex.Replace(Value1, "\x9C", "?")
Value1 = System.Text.RegularExpressions.Regex.Replace(Value1, "\x8C", "?")
Value1 = System.Text.RegularExpressions.Regex.Replace(Value1, "\+", "+")
Value1 = Value1.Replace(""", guillement)
Value1 = Value1.Replace("&", "&")
Dim Value2 As String
Value2 = System.Text.RegularExpressions.Regex.Replace(matches1(i).Value, "(<[^>]+>)", "")
Value2 = Value2.Replace("&", guillement)
Dim item1 As New ListViewItem(i + 1)
item1.SubItems.Add(Value1)
item1.SubItems.Add(Value2)
Me.LvResults.Items.AddRange(New ListViewItem() {item1})
Next
End If
Me.LbResults.Text = Me.LvResults.Items.Count.ToString & " résultat(s) trouvé(s)"
Me.Cursor = Cursors.Default
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information, "Erreur - Ty")
Me.LbResults.Text = Me.LvResults.Items.Count.ToString & " résultat(s) trouvé(s)"
Me.Cursor = Cursors.Default
End Try
End Sub
A voir également:
"Url de la page, sur votre site, où est affiché le lien vers"
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 28 juil. 2009 à 21:02
Mais tu perds les accents
La vrai solution est
Car le site est en iso-8859-1
Dim respEncoding As Encoding = Encoding.GetEncoding("iso-8859-1")
Ou mieux le prendre dans la reponse
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Dim dataStream As Stream = response.GetResponseStream()
Dim respEncoding As Encoding = Encoding.GetEncoding(response.CharacterSet)
Dim reader As New StreamReader(dataStream, respEncoding)
Dim responseFromServer As String = reader.ReadToEnd()
guice11
Messages postés52Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention17 décembre 2009 28 juil. 2009 à 19:42
oui ils son identique les pattern mais je vais enlevé le 2ème ou le modifier toute façon. Le pb est pas là. Merci d'avoir répondu aussi. Mais rien n'y fais tjrs pas de solution à ce pb .
Vous n’avez pas trouvé la réponse que vous recherchez ?
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 28 juil. 2009 à 20:22
Expliques plus ton probleme
chez moi ca fonctionne avec le code
Dim request As WebRequest = WebRequest.Create("http://www.bedetheque.com/bandes_dessinees_A.html")
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream, Encoding.UTF7)
Dim responseFromServer As String = reader.ReadToEnd()
Me.RtHtmlData.Text = responseFromServer
reader.Close()
dataStream.Close()
response.Close()
Me.LvResults.Items.Clear()
Dim result As String
result = Me.RtHtmlData.Text
Dim Pattern As String
Pattern = "[ .*?)"" TARGET=""_top"" alt=""(?].*?)"" title=""(?<title>.*?)"" >(?<titre>.*?)
"
Dim rx As New Regex(Pattern, RegexOptions.IgnoreCase)
Dim matches As MatchCollection = rx.Matches(result)
For Each m As Match In matches
Dim lvi As ListViewItem = New ListViewItem
lvi.Text = m.Groups("titre").Value
lvi.SubItems.Add(m.Groups("title").Value)
lvi.SubItems.Add(m.Groups("alt").Value)
lvi.SubItems.Add(m.Groups("serie").Value)
LvResults.Items.Add(lvi)
Next
guice11
Messages postés52Date d'inscriptionsamedi 25 novembre 2006StatutMembreDernière intervention17 décembre 2009 28 juil. 2009 à 20:40
Est ce que cela affiche les BD commencant par A du site bedetheque.com comme le code ci desssus le montre ? Si oui est ce que quand vous prenez la lettre C, cela afficher la série "Carnage+" et "Carmen+Travis" plus toutes les autres séries aussi ? Pck moi aucun "+" ne s'affichent. Les séries sont affichées dans une listview. Voilà le pb...