Herb191 Posted October 24, 2011 Posted October 24, 2011 (edited) Is there a fast way of check to see if a URL is a download link before I use _IENavigate? Also, does anyone know how to disable all popup windows (like the are your sure you want to navigate away windows) without disabling scripting? Thanks Edited October 25, 2011 by Herb191
Robjong Posted October 25, 2011 Posted October 25, 2011 (edited) Hey, What do the links look like, are they just URI's to a file? Do you know what types of files to expect? If so you could just use StringRegExp, something like this for example. $file_url = "http://www.example.com/path/to/file.zip" If StringRegExp($file_url, "/[^/]+\.(rar|zip)\z") Then ConsoleWrite("File URL: " & $file_url & @CRLF) ; do what you need want with the file URL here EndIf Edited October 25, 2011 by Robjong
Herb191 Posted October 25, 2011 Author Posted October 25, 2011 Hey, What do the links look like, are they just URI's to a file? Do you know what types of files to expect? If so you could just use StringRegExp, something like this for example. $file_url = "http://www.example.com/path/to/file.zip" If StringRegExp($file_url, "/[^/]+\.(rar|zip)\z") Then ConsoleWrite("File URL: " & $file_url & @CRLF) ; do what you need want with the file URL here EndIf Hi Robjong, Thanks for the response. I am actually trying to weed out any URL's that are download links. Unfortunately I never know what the URL's are going to look like because I am using a web crawler to get them from completely random websites. I have tried something similar to what you have above but there are thousands of possible download files and my script inevitably finds one and stops working.
Robjong Posted October 25, 2011 Posted October 25, 2011 (edited) What do you do with valid URL's? show them in an IE window? get the source? If it is because you want to parse the URL's in a crawler like fashion, or show only html pages for example, you could check the content-type of the URL by checking the headers... Here is a rough example: Global $aAcceptedContentTypes = "text/\w+" ; allows any text content type ;~ Global $aAcceptedContentTypes[2] = ["text/html", "text/plain"] ; if the type string contains regex meta characters you can escape the string by putting it between \Q and \E(example: \Qtext/foo\E) $url_text = "http://www.autoitscript.com" $url_file = "http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe" $result = _CheckContentType($url_text, $aAcceptedContentTypes) ConsoleWrite("- " & $result & @CRLF) $result = _CheckContentType($url_file, $aAcceptedContentTypes) ConsoleWrite("- " & $result & @CRLF) Func _CheckContentType($sURL, $mContentTypes) Local $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") $oHTTP.open("HEAD", $sURL) $oHTTP.Send() If IsArray($mContentTypes) Then For $i = 0 To UBound($mContentTypes) - 1 If StringRegExp($oHTTP.GetAllResponseHeaders, "(?i)content-type:\s*" & $mContentTypes[$i] & ";") Then Return SetError(0, 0, True) Next ElseIf StringRegExp($oHTTP.GetAllResponseHeaders, "(?i)content-type:\s*" & $mContentTypes & ";") Then Return SetError(0, 0, True) EndIf Return SetError(1, 0, False) EndFunc If you want download the files/source you could use 'GET' instead 'HEAD' for the open function and download if it passes the check, this would save you a request. Edited October 25, 2011 by Robjong
Herb191 Posted October 25, 2011 Author Posted October 25, 2011 That is nice bit of coding but I need to be able to show the page URL's in an IE window because I am processing some date after the server side scripts run...also I need to be able to run on just about any kind of page (except PDF).
Robjong Posted October 25, 2011 Posted October 25, 2011 In that case the example I provided should help you out since pages are served as HTML?!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now