Sign in to follow this  
Followers 0
buzz44

Can AutoIt get the Page Source

24 posts in this topic




Can I somehow get the Page Source / HTML Code of a webpage with AutoIt?

<{POST_SNAPBACK}>

isn't that what InetGet() does?

Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Well I tested that one the page I want to get the source for and it returned like 10 lines. Then I went into Mozilla, and click view page source and it was like 1000 lines...

Edit: Ok it seems to be working now...

Edited by Burrup

[u]Old Projects:[/u]A3MORGB2Hex[u]Old Functions:[/u]_TimeAdd/_TimeSub_AddComma_BubbleSort _RippleSort "He who does not understand your silence will probably not understand your words." - Elbert Hubbard.

Share this post


Link to post
Share on other sites

Well I tested that one the page I want to get the source for and it returned like 10 lines. Then I went into Mozilla, and click view page source and it was like 1000 lines...

<{POST_SNAPBACK}>

Do you have an example page where you see this issue with ?

Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Well I just tested it on the source for this current page, and it returned correctly. Before I tested it on a Hotmail page, which uses Javascript but even if you click Page Source in Mozilla it still wont tell you the source of the Java, I guess I compared 2 different pages.

My problem now is I want to search the source for this string...

"http://64.4.55.109/i.F424A.gif"

and tell me how many times it finds it, I can get it to search ok using StringInStr() but I dont know how to tell it to stop when it reaches the end of the file.


[u]Old Projects:[/u]A3MORGB2Hex[u]Old Functions:[/u]_TimeAdd/_TimeSub_AddComma_BubbleSort _RippleSort "He who does not understand your silence will probably not understand your words." - Elbert Hubbard.

Share this post


Link to post
Share on other sites

Well I just tested it on the source for this current page, and it returned correctly. Before I tested it on a Hotmail page, which uses Javascript but even if you click Page Source in Mozilla it still wont tell you the source of the Java, I guess I compared 2 different pages.

My problem now is I want to search the source for this string...

"http://64.4.55.109/i.F424A.gif"

and tell me how many times it finds it, I can get it to search ok using StringInStr() but I dont know how to tell it to stop when it reaches the end of the file.

<{POST_SNAPBACK}>

Something like:

$source = FileRead("web.txt",FileGetSize("web.txt"))
$Count = 0
While  stringInStr($source,"http://64.4.55.109/i.F424A.gif",0,$count+1)
    $count = $count + 1
WEnd
MsgBox(262144,'test','$count=' & $count )

Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Thanks! Works great. I dont understand the FileGetSize("web.txt") bit.

So to find out the number of lines in a text file, we can tell that by its size ?


[u]Old Projects:[/u]A3MORGB2Hex[u]Old Functions:[/u]_TimeAdd/_TimeSub_AddComma_BubbleSort _RippleSort "He who does not understand your silence will probably not understand your words." - Elbert Hubbard.

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

Thanks! Works great. I dont understand the FileGetSize("web.txt") bit.

So to find out the number of lines in a text file, we can tell that by its size ?

<{POST_SNAPBACK}>

The fileread() statement will read from the file with a defined length.

So this statement reads the whole file in one statement into the variable $source.

Edited by JdeB

Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

but...

FileRead ( filehandle or "filename", count )

count The number of characters to read.

the count is the size of the file?


[u]Old Projects:[/u]A3MORGB2Hex[u]Old Functions:[/u]_TimeAdd/_TimeSub_AddComma_BubbleSort _RippleSort "He who does not understand your silence will probably not understand your words." - Elbert Hubbard.

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

but...

FileRead ( filehandle or "filename", count )

count The number of characters to read.

the count is the size of the file?

<{POST_SNAPBACK}>

Count is the number of characters you want the read from the file.

So in this case: yes it is equal to its size...

Edited by JdeB

Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

What if its not equal to the size and I want to read the whole file.

<{POST_SNAPBACK}>

Don't understand what you mean.....

FileGetSize() will always return the correct filesize.


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Yes but will it always return the number of lines in the file?

<{POST_SNAPBACK}>

Reading a file with FileRead() has nothing to do with lines....

Let me try to explain:

FileReadLine() will read character until it encounters a @cr or @lf character and returns the record in a variable. So everytime you execute Filereadline($filehandle), the next record is read into the variable untill EOF is encountered at which time the @error is set.

FileRead() just looks at the file as a bunch of characters and doesn't look for @lf or @cr.

So if you for example have this code :

$variable=FileRead($filehandle,80)

Then everytime 80 characters will be read from the file into the variable until EOF is encountered.


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

I still dont get it, say the file size is 900 bytes, if i have

FileRead("web.txt",FileGetSize("web.txt"))

Each time 900 characters will be read? Is that just so that you get a 100% gaurentee that the number will be greater than the number of lines in the file?


[u]Old Projects:[/u]A3MORGB2Hex[u]Old Functions:[/u]_TimeAdd/_TimeSub_AddComma_BubbleSort _RippleSort "He who does not understand your silence will probably not understand your words." - Elbert Hubbard.

Share this post


Link to post
Share on other sites

I still dont get it, say the file size is 900 bytes, if i have

FileRead("web.txt",FileGetSize("web.txt"))

Each time 900 characters will be read? Is that just so that you get a 100% gaurentee that the number will be greater than the number of lines in the file?

<{POST_SNAPBACK}>

I must be my english :)

This statement will always read the whole file into $variable and normally is executed only one time.

$variable = FileRead("web.txt",FileGetSize("web.txt"))

This will read a record/line at a time till EOF is encountered:

$file = FileOpen("test.txt", 0)
While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    MsgBox(0, "Line read:", $line)
Wend
FileClose($file)

This will read 80 characters at a time till eof is encountered:

$file = FileOpen("test.txt", 0)
While 1
    $line = FileRead($file,80)
    If @error = -1 Then ExitLoop
    MsgBox(0, "Line read:", $line)
Wend
FileClose($file)

So in your case you wanted to search the whole file for an occurrence of a given string and then its the easiest to read the whole file into a Variable and then search in that variable like i shown.......


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

I know how to use it now, but I still dont understand lol.

So if I find a file, totally non AutoIt related, a text file, that is 2 bytes big, I can say that that file is 2 lines long, just by looking at its size..


[u]Old Projects:[/u]A3MORGB2Hex[u]Old Functions:[/u]_TimeAdd/_TimeSub_AddComma_BubbleSort _RippleSort "He who does not understand your silence will probably not understand your words." - Elbert Hubbard.

Share this post


Link to post
Share on other sites

I know how to use it now, but I still dont understand lol.

So if I find a file, totally non AutoIt related, a text file, that is 2 bytes big, I can say that that file is 2 lines long, just by looking at its size..

<{POST_SNAPBACK}>

not 2 lines long but 2 characters long.

Like i said... Forget about lines/records with Fileread !!!!!!!!!!!!!

Fileread reads a number of characters that you specify in the second parameter!


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0