Duff360 Posted February 8, 2017 Share Posted February 8, 2017 Hello, I'm still very new with AutoIT. I would like to copy and paste data from a website page to Excel (or Notepad). Example with this page: http://www.sciencedirect.com/science/article/pii/S1750946716301660 I would like to copy the title, volume issue and link to an Excel file automatically. Colum A : The New Zealand minds for minds autism spectrum disorder self-reported cohort Colum B : Volume 36, April 2017, Pages 1–7 Colum C: http://dx.doi.org/10.1016/j.rasd.2016.12.003 Thank you very much! Link to comment Share on other sites More sharing options...
Subz Posted February 9, 2017 Share Posted February 9, 2017 Unfortunately Column C: would be difficult to get as it's a dynamic link and not within the page source the others are fairly easy to get using IE GetElementsbyTagName which then can be used to add to Excel, for example: #include <Array.au3> #include <IE.au3> $oIE = _IECreate ("http://www.sciencedirect.com/science/article/pii/S1750946716301660", 0, 0, 1, 0) If IsObj($oIE) = False Then Exit Local $aValues[1][3] $aValues[0][0] = _GetInnerText('p', 'volIssue') $aValues[0][1] = _GetInnerText('h1', 'svTitle') $aValues[0][2] = _GetInnerText('a', 'cLink') _IEQuit ($oIE) _ArrayDisplay($aValues) Func _GetInnerText($sTagName, $sTagValue, $sTagType = 'className') Local $sResult, $oIETags $oIETags = $oIE.document.GetElementsByTagName($sTagName) For $oIEItem in $oIETags Switch $sTagType Case 'className' $sResult = $oIEItem.className Case 'id' $sResult = $oIEItem.id EndSwitch Switch $sTagName Case 'a' If $sResult = $sTagValue Then Return $oIEItem.href Case Else If $sResult = $sTagValue Then Return $oIEItem.innerText EndSwitch Next Return '' EndFunc Duff360 1 Link to comment Share on other sites More sharing options...
Duff360 Posted February 9, 2017 Author Share Posted February 9, 2017 (edited) Hello @Subz Thank you very much for your answer. It is much more complicated than I expected. Your example works perfectly with ScienceDirect, but I wasn't able to adapt your script to my other application. First, my page is protected by a password. So I don't think I can use $oIE = _IECreate Is there a function like WinActive but for IE? Second, if my code is: <div class="file-entry"> <div class="section title"> <div class="data"> <h3>Green Technologies for Sustainable Water Management</h3> Would my code be: $aValues[0][2] = _GetInnerText('h3', 'section title') Thank you very much for your help! Edited February 9, 2017 by Duff360 Link to comment Share on other sites More sharing options...
Subz Posted February 9, 2017 Share Posted February 9, 2017 Hi Duff360 Just need to load the page visible, please code below. You can then enter your username and password, then add a WinWaitActive for the title page before grabbing the data. $oIE = _IECreate ("http://www.sciencedirect.com/science/article/pii/S1750946716301660", 0) Generally speaking you want to use id rather than class, since there should only be one id per page, whereas classes can be used multiple times. However if it isn't available you can use a class, in your example above your code would want to be the following tagname div and the class data: $aValues[0][2] = _GetInnerText('div', 'data') InnerText will strip HTML code so it will only return "Green Technologies for Sustainable Water Management" removing the <h3> tags. Anyway I hope that kind of makes sense. Link to comment Share on other sites More sharing options...
Duff360 Posted February 9, 2017 Author Share Posted February 9, 2017 Hello Subz, Thanks again for your answer. I want to grab the data from a page already open. If possible, I would like to avoid using _IECreate. Link to comment Share on other sites More sharing options...
Subz Posted February 9, 2017 Share Posted February 9, 2017 You can use _IEAttach for example: Local $oIE = _IEAttach("Title of page goes here") Link to comment Share on other sites More sharing options...
Duff360 Posted February 9, 2017 Author Share Posted February 9, 2017 (edited) It works! Thank you very much! Edited February 9, 2017 by Duff360 Link to comment Share on other sites More sharing options...
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