C# 网站内容读取和识别字符集 受保护的子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击 Dim Imagelink As String=“” 将文本设置为字符串=TextBox1.Text Dim请求作为HttpWebRequest=DirectCast(HttpWebRequest.Create(Text),HttpWebRequest) request.UserAgent=“Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.0)” 作为HttpWebResponse的Dim响应 response=DirectCast(request.GetResponse(),HttpWebResponse) Dim enc As编码 尝试 enc=Encoding.GetEncoding(响应字符集) 特例 enc=Encoding.GetEncoding(“ISO-8859-1”) 结束尝试 Dim读卡器作为新的StreamReader(response.GetResponseStream(),enc) Dim sr As String=reader.ReadToEnd() 将图案变暗为字符串=“[^'”]*)['”“]” Dim m As MatchCollection=Regex.Matches(sr,模式) 对于每mm,以m为单位匹配 Dim link_uuASSTRING=mm.Groups(“SRC”).值 'Dim x_uuas String=链接子字符串(0,7) 如果链接子字符串(0,7)=“http://”,则 Response.Write(mm.Groups(“SRC”).Value++“”) Imagelink=链接_ 如果结束 下一个 暗显图像uu作为新图像 图像属性(“src”)=图像链接 占位符1.控件.添加(图像) 端接头

C# 网站内容读取和识别字符集 受保护的子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击 Dim Imagelink As String=“” 将文本设置为字符串=TextBox1.Text Dim请求作为HttpWebRequest=DirectCast(HttpWebRequest.Create(Text),HttpWebRequest) request.UserAgent=“Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.0)” 作为HttpWebResponse的Dim响应 response=DirectCast(request.GetResponse(),HttpWebResponse) Dim enc As编码 尝试 enc=Encoding.GetEncoding(响应字符集) 特例 enc=Encoding.GetEncoding(“ISO-8859-1”) 结束尝试 Dim读卡器作为新的StreamReader(response.GetResponseStream(),enc) Dim sr As String=reader.ReadToEnd() 将图案变暗为字符串=“[^'”]*)['”“]” Dim m As MatchCollection=Regex.Matches(sr,模式) 对于每mm,以m为单位匹配 Dim link_uuASSTRING=mm.Groups(“SRC”).值 'Dim x_uuas String=链接子字符串(0,7) 如果链接子字符串(0,7)=“http://”,则 Response.Write(mm.Groups(“SRC”).Value++“”) Imagelink=链接_ 如果结束 下一个 暗显图像uu作为新图像 图像属性(“src”)=图像链接 占位符1.控件.添加(图像) 端接头,c#,asp.net,vb.net,http,webrequest,C#,Asp.net,Vb.net,Http,Webrequest,这是我用来向网页发送请求以获取其内容并从网页上提取图像链接的代码。但是,在某些网页中,它不返回web标头中的字符集,而是返回“”。但是,当我尝试使用默认编码进行解析时,它也没有给出正确的内容?这真的令人沮丧,以前有人遇到过这种情况吗?如果有人能为我指出正确的方向,告诉我如何克服这个问题,或者预测使用哪种编码,那将是非常感谢的 响应头中不提供字符集的站点示例 在这种情况下,字符编码在标题中给出:内容类型:text/html;charset=utf-8如果没有设置HTTP头,默认值为ISO-8859

这是我用来向网页发送请求以获取其内容并从网页上提取图像链接的代码。但是,在某些网页中,它不返回web标头中的字符集,而是返回“”。但是,当我尝试使用默认编码进行解析时,它也没有给出正确的内容?这真的令人沮丧,以前有人遇到过这种情况吗?如果有人能为我指出正确的方向,告诉我如何克服这个问题,或者预测使用哪种编码,那将是非常感谢的

响应头中不提供字符集的站点示例


在这种情况下,字符编码在标题中给出:
内容类型:text/html;charset=utf-8

如果没有设置HTTP头,默认值为ISO-8859-1,但有些网站在HTML内的meta标记中设置了字符集。你也可以检查一下。如果也没有设置,那么它就是一个糟糕的站点。另外,您的regexp可能可以通过使用非贪婪的
来简化,这样您就不必使用那些复杂的not子句。我用默认的iso-8859-1和utf-8检查了该站点的编码都不起作用,因为它们的内容中有什么,编码都不起作用?还有其他方法如何确定?这不可能是一个糟糕的网站,因为它是图片托管网站的前10名。如果你能告诉这个网站,那么其他人可以更好地看到情况。否则就很难说了。我把它贴在了下面的问题上。对不起,我以为这是你想要从中获取内容的实际网站的截图。是的,这是内容标题,不是网站中内容的编码。当我用utf-8编码时,它返回的是乱七八糟的文本。
  Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Imagelink As String = ""
        Dim Text As String = TextBox1.Text
        Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(Text), HttpWebRequest)
        request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"
        Dim respons As HttpWebResponse
        respons = DirectCast(request.GetResponse(), HttpWebResponse)
        Dim enc As Encoding
        Try
            enc = Encoding.GetEncoding(respons.CharacterSet)
        Catch ex As Exception
            enc = Encoding.GetEncoding("ISO-8859-1")
        End Try

        Dim reader As New StreamReader(respons.GetResponseStream(), enc)
        Dim sr As String = reader.ReadToEnd()

        Dim Pattern As String = "<img([^s]|s[^r]|sr[^c]|src[^=]|src=[^'""])*src=['""](?<SRC>[^'""]*)['""]"
        Dim m As MatchCollection = Regex.Matches(sr, Pattern)
        For Each mm As Match In m
            Dim link_ As String = mm.Groups("SRC").Value
            ' Dim x_ As String = link_.Substring(0, 7)

            If link_.Substring(0, 7) = "http://" Then
                Response.Write(mm.Groups("SRC").Value + "" + "<br>")
                Imagelink = link_
            End If


        Next
        Dim image_ As New Image
        image_.Attributes("src") = Imagelink
        PlaceHolder1.Controls.Add(image_)
    End Sub