Jump to content
UBot Underground

Regexp With A Variable


Recommended Posts

I have this:

In a variable #tmp there is a height in cm, this is fetched from a CSV file. I want to scrape the corresponding value (value="XX") from the page so that I can do a change attribute to that value.

This is how it looks on the website

<option value="2">4' 1" - 124 cm</option>
<option value="3">4' 2" - 127 cm</option>
<option value="4">4' 3" - 130 cm</option>
<option value="5">4' 4" - 132 cm</option>
<option value="6">4' 5" - 135 cm</option>
<option value="7">4' 6" - 137 cm</option>
<option value="8">4' 7" - 140 cm</option>
<option value="9">4' 8" - 142 cm</option>
<option value="10">4' 9" - 145 cm</option>
<option value="11">4' 10" - 147 cm</option>
<option value="12">4' 11" - 150 cm</option>
<option value="13">5' 0" - 152 cm</option>
<option value="14">5' 1" - 155 cm</option>
<option value="15">5' 2" - 157 cm</option>
<option value="16">5' 3" - 160 cm</option>
<option value="17">5' 4" - 163 cm</option>
<option value="18">5' 5" - 165 cm</option>
<option value="19">5' 6" - 168 cm</option>
<option value="20">5' 7" - 170 cm</option>
<option value="21">5' 8" - 173 cm</option>
<option value="22">5' 9" - 175 cm</option>
<option value="23">5' 10" - 178 cm</option>
<option value="24">5' 11" - 180 cm</option>
<option value="25">6' 0" - 183 cm</option>
<option value="26">6' 1" - 185 cm</option>
<option value="27">6' 2" - 188 cm</option>
<option value="28">6' 3" - 190 cm</option>
<option value="29">6' 4" - 193 cm</option>
<option value="30">6' 5" - 196 cm</option>
<option value="31">6' 6" - 198 cm</option>
<option value="32">6' 7" - 201 cm</option>
<option value="33">6' 8" - 203 cm</option>
<option value="34">6' 9" - 206 cm</option>
<option value="35">6' 10" - 208 cm</option>
<option value="36">6' 11" - 211 cm</option>
<option value="37">7' 0" - 213 cm</option>

So I intended to do like this:
 

set(#doc,$document text,"Global")

clear list(%scraped)
add list to list(%scraped,$find regular expression(#doc,"(?<=<option value=\")[0-9]\{1,2\}(?=\">[4-7]\{1\}\'\\s[0-9]\{1,2\}\"\\s-\\s{#tmp}\\scm</option>)"),"Delete","Global")
set(#scraped,$list item(%scraped,0),"Global")

...which for the height 163 cm should result in 17, while for the heght 198 cm should result in 31.
The regexp without the variable, but set for 198 cm height looks like this:

(?<=<option value=")[0-9]{1,2}(?=">[4-7]{1}'\s[0-9]{1,2}"\s-\s198\scm</option>)


The regexp seems to be correct according to EditPad Lite 7 with regexp setting enabled, but there is that {#tmp} .


Any ideas on why I don't get this to work?



 

Link to post
Share on other sites

Could scrape attribute but with a regular expression do the trick? I have NO clue on what to do with that.

Link to post
Share on other sites

This is easy with XPath:

set(#tmp,"163 cm","Global")
load html("<select>
<option value=\"2\">4\' 1\" - 124 cm</option>
<option value=\"3\">4\' 2\" - 127 cm</option>
<option value=\"4\">4\' 3\" - 130 cm</option>
<option value=\"5\">4\' 4\" - 132 cm</option>
<option value=\"6\">4\' 5\" - 135 cm</option>
<option value=\"7\">4\' 6\" - 137 cm</option>
<option value=\"8\">4\' 7\" - 140 cm</option>
<option value=\"9\">4\' 8\" - 142 cm</option>
<option value=\"10\">4\' 9\" - 145 cm</option>
<option value=\"11\">4\' 10\" - 147 cm</option>
<option value=\"12\">4\' 11\" - 150 cm</option>
<option value=\"13\">5\' 0\" - 152 cm</option>
<option value=\"14\">5\' 1\" - 155 cm</option>
<option value=\"15\">5\' 2\" - 157 cm</option>
<option value=\"16\">5\' 3\" - 160 cm</option>
<option value=\"17\">5\' 4\" - 163 cm</option>
<option value=\"18\">5\' 5\" - 165 cm</option>
<option value=\"19\">5\' 6\" - 168 cm</option>
<option value=\"20\">5\' 7\" - 170 cm</option>
<option value=\"21\">5\' 8\" - 173 cm</option>
<option value=\"22\">5\' 9\" - 175 cm</option>
<option value=\"23\">5\' 10\" - 178 cm</option>
<option value=\"24\">5\' 11\" - 180 cm</option>
<option value=\"25\">6\' 0\" - 183 cm</option>
<option value=\"26\">6\' 1\" - 185 cm</option>
<option value=\"27\">6\' 2\" - 188 cm</option>
<option value=\"28\">6\' 3\" - 190 cm</option>
<option value=\"29\">6\' 4\" - 193 cm</option>
<option value=\"30\">6\' 5\" - 196 cm</option>
<option value=\"31\">6\' 6\" - 198 cm</option>
<option value=\"32\">6\' 7\" - 201 cm</option>
<option value=\"33\">6\' 8\" - 203 cm</option>
<option value=\"34\">6\' 9\" - 206 cm</option>
<option value=\"35\">6\' 10\" - 208 cm</option>
<option value=\"36\">6\' 11\" - 211 cm</option>
<option value=\"37\">7\' 0\" - 213 cm</option>
</select>")
set(#value,$plugin function("HeopasCustom.dll", "$Heopas Xpath Parser", $document text, "//option[contains(text(), \'{#tmp}\')]", "value", ""),"Global")
change attribute(<value=#value>,"innertext","CHANGED")
  • Like 1
Link to post
Share on other sites

 

This is easy with XPath:

set(#tmp,"163 cm","Global")
load html("<select>
<option value=\"2\">4\' 1\" - 124 cm</option>
<option value=\"3\">4\' 2\" - 127 cm</option>
<option value=\"4\">4\' 3\" - 130 cm</option>
<option value=\"5\">4\' 4\" - 132 cm</option>
<option value=\"6\">4\' 5\" - 135 cm</option>
<option value=\"7\">4\' 6\" - 137 cm</option>
<option value=\"8\">4\' 7\" - 140 cm</option>
<option value=\"9\">4\' 8\" - 142 cm</option>
<option value=\"10\">4\' 9\" - 145 cm</option>
<option value=\"11\">4\' 10\" - 147 cm</option>
<option value=\"12\">4\' 11\" - 150 cm</option>
<option value=\"13\">5\' 0\" - 152 cm</option>
<option value=\"14\">5\' 1\" - 155 cm</option>
<option value=\"15\">5\' 2\" - 157 cm</option>
<option value=\"16\">5\' 3\" - 160 cm</option>
<option value=\"17\">5\' 4\" - 163 cm</option>
<option value=\"18\">5\' 5\" - 165 cm</option>
<option value=\"19\">5\' 6\" - 168 cm</option>
<option value=\"20\">5\' 7\" - 170 cm</option>
<option value=\"21\">5\' 8\" - 173 cm</option>
<option value=\"22\">5\' 9\" - 175 cm</option>
<option value=\"23\">5\' 10\" - 178 cm</option>
<option value=\"24\">5\' 11\" - 180 cm</option>
<option value=\"25\">6\' 0\" - 183 cm</option>
<option value=\"26\">6\' 1\" - 185 cm</option>
<option value=\"27\">6\' 2\" - 188 cm</option>
<option value=\"28\">6\' 3\" - 190 cm</option>
<option value=\"29\">6\' 4\" - 193 cm</option>
<option value=\"30\">6\' 5\" - 196 cm</option>
<option value=\"31\">6\' 6\" - 198 cm</option>
<option value=\"32\">6\' 7\" - 201 cm</option>
<option value=\"33\">6\' 8\" - 203 cm</option>
<option value=\"34\">6\' 9\" - 206 cm</option>
<option value=\"35\">6\' 10\" - 208 cm</option>
<option value=\"36\">6\' 11\" - 211 cm</option>
<option value=\"37\">7\' 0\" - 213 cm</option>
</select>")
set(#value,$plugin function("HeopasCustom.dll", "$Heopas Xpath Parser", $document text, "//option[contains(text(), \'{#tmp}\')]", "value", ""),"Global")
change attribute(<value=#value>,"innertext","CHANGED")

Yes, this worked. Thank you very much!

 

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...