рд╡реЙрдЯрд░рд┐рд░: рдЬрдЯрд┐рд▓ рд╕рд╛рдЗрдЯреЛрдВ рдХреА рдЖрд╕рд╛рди рдкрд╛рд░реНрд╕рд┐рдВрдЧ

рдЫрд╡рд┐ рд╣рд░ рдХреЛрдИ рдЬреЛ рдкрд╛рд░реНрд╕рд░ рд▓рд┐рдЦрддрд╛ рд╣реИ, рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╕реМ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╕реМ рдФрд░ рдкрд╣рд▓реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЯрдХ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдЧрд▓реЗ рдлреНрд░реЙрд╕реНрдЯрдмрдиреЗрдЯ рд╕рд╛рдЗрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЬрдм рдмрд╛рдд рдЖрддреА рд╣реИ javascripts рдФрд░ ajax рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреА, рддреЛ рдЙрдиреНрд╣реЗрдВ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рдФрд░ рд░реЗрдЧреБрд▓рд░ рдХрд░реНрд▓ рдФрд░ regexp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓рдирд╛ рд╕реНрд╡рдпрдВ рд╕реВрдЪрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред



рдореЛрдЯреЗ рддреМрд░ рдкрд░, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВред рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рднрд╛рд╖рд╛ ( jParser рдФрд░ jTokenizer ) рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ js рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдВрддрд┐рдо рдбреЛрдо-рдЯреНрд░реА рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред



рдкреНрд░рд╛рдЪреАрди рд╕рдордп рдореЗрдВ, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛: рд╣рдордиреЗ рдПрдХ рдЕрд▓рдЧ рдорд╢реАрди рдкрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛, рдЗрд╕рдореЗрдВ js рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рд▓рдЧрд╛рддрд╛рд░ рдЦрдЯрдЦрдЯрд╛рдпрд╛ рдФрд░ рдЗрд╕рд╕реЗ (рдиреМрдХрд░реА) рдиреМрдХрд░реА рдкреНрд░рд╛рдкреНрдд рдХреА, рд╕рд╛рдЗрдЯ рд╕реНрд╡рдпрдВ рдПрдХ iframe рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рдереА, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ iframe рдбреЛрдо рдЯреНрд░реА рд╡рд╛рдкрд╕ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╕рд░реНрд╡рд░ред



рдЕрдм рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЙрдкрдХрд░рдг рд╣реИрдВ - рдЬрд╝реБрд▓реНрдирд░ ( рдХреНрд░реЙрдмрд░ ) рдФрд░ рд╡рддрд┐рд░ ред рдкрд╣рд▓рд╛ рд╣реИ рд╣реЗрдбрд▓реЗрд╕ рдлрд╛рдпрд░рдлреЙрдХреНрд╕ред рдХреНрд░реЙрдмрд░ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ ff-plugin рднреА рд╣реИ, рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд╛рд░реНрд╕рд░-js-code рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдХреБрдХреАрдЬрд╝ рд╡рд╣рд╛рдБ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рдЪреНрдЫрд╛ рд╣реИред Watir рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо travelocity.com рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ ред



рд╡рд╛рдЯрд░ рдПрдХ рдорд╛рдгрд┐рдХ рд░рддреНрди рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ - рд╡рд╛рддрд┐рд░, рдлрд╛рдпрд░рд╡рд╛рдЗрдЯрд┐рд░ рдФрд░ рд╕рдлрд╛рд░реАрд╡рд┐рдЯрд┐рд░ред рд╡рд┐рд╕реНрддреГрдд рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдореИрдиреБрдЕрд▓ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореБрдЭреЗ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рдСрдмрдВрдЯ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ (рдпрд╛рдиреА 6) рд╡реЗрдЯрд┐рд░ рд░реВрдмреА 1.9.1 рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдВрд╕реНрдХрд░рдг 1.8.6 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдерд╛, рдлрд┐рд░ рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред Ubunt рдореЗрдВ - FireWatir рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдпрд░) рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ jssh рдкреНрд▓рдЧрдЗрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдкрдирд╛ рдкреГрд╖реНрда рдкрд░ рдлрд╛рдпрд░рд╡рд╛рдЗрдЯрд┐рд░ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рдЙрдмрдВрдЯреВ 10.04 рдкрд░ рдореЗрд░реЗ рдлрд╛рдпрд░рдлреЙрдХреНрд╕ 3.6 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред



рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ jssh рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЖрдкрдХреЛ firefox -jssh



рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреЛрд░реНрдЯ 9997 ( telnet localhost 9997



) рдкрд░ рдХреБрдЫ рднреЗрдЬреЗрдВред рдпрджрд┐ рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдЦреБрд▓рддрд╛ рд╣реИ, рдпрд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдореЗрд░рд╛), рддреЛ рдЖрдкрдХреЛ рдЕрдкрдирд╛ jssh рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЕрд╕реЗрдВрдмрд▓реА рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдпрд╣рд╛рдВ рд╣реИ ред



рдЪрд▓рд┐рдП travelocity.com рдХреЗ рд╕рд╛рде рдПрдХ рд╣реЛрдЯрд▓ рдкрд╛рд░реНрд╕рд░ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЖрдЬ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдпреЙрд░реНрдХ, рдПрдирд╡рд╛рдИ, рдпреВрдПрд╕рдП рдХреЗ рд╕рднреА рд╣реЛрдЯрд▓реЛрдВ рдХреЗ рдХрдорд░реЛрдВ рдХреА рдХреАрдордд рдЪреБрдиреЗрдВред рд╣рдо Ubuntu 10.4 рдкрд░ рдлрд╝рд╛рдпрд░рд╡рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред



рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдкреЗрдЬ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ:



require "rubygems"<br>require "firewatir"<br>ff = FireWatir::Firefox.new<br>ff.goto("http://www.travelocity.com/Hotels")<br>





рдЖрд╡рд╢реНрдпрдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдлреЙрд░реНрдо рднрд░реЗрдВ рдФрд░ рдЬрдорд╛ рдХрд░реЗрдВ:



ff.text_field(:id,"HO_to").val("New York, NY, USA")<br>ff.text_field(:id,"HO_fromdate").val(Time.now.strftime("%m/%d/%Y"))<br>ff.text_field(:id,"HO_todate").val(Time.tomorrow.strftime("%m/%d/%Y"))<br>ff.form(:name,"formHO").submit<br>





рд╣рдо рдбрд╛рдЙрдирд▓реЛрдб рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:



ff.wait_until{ff.div(:id,"resultsList").div(:class,"module").exists?}<br>





Wait_until рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рд░реНрджреЗрд╢ рд╣реИред рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рддреЗ рд╕рдордп, рд╕рд╛рдЗрдЯ рдкрд░ рдХрдИ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж - рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдзред рдЕрдВрддрд┐рдо рдкреГрд╖реНрда рд▓реЛрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдбреЛрдо-рдЯреНрд░реА рдХреЗ рд╕рд╛рде рдЗрд╕ рдХрд╛рдо рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВред рдореБрдЭреЗ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рдкреЗрдЬ рдиреЗ рд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ? рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ ajax рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкреГрд╖реНрда рдкрд░ рдХреМрди рд╕реЗ рддрддреНрд╡ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, /pub/gwt/hotel/esf/hotelresultlist.gwt-rpc рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж, рдХрдИ <div class="module">



рддрддреНрд╡ рдкрд░рд┐рдгрд╛рдордкреЗрдЬ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдЙрдирдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдХреБрдЫ рдХрдорд╛рдВрдб, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП text_field, рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА wa_until рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрдорд╛рдВрдб рдЙрдирдХреЗ рд╕рд╛рдордиреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред



рдЕрдм рдкреГрд╖реНрда рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд░реЗрдВ:



while true do<br> ff.wait_until{ff.div(:id,"resultsList").div(:class,"module").exists?}<br> ...<br> next_link = ff.div(:id,"resultcontrol-top").link(:text,"Next")<br> if (next_link.exists?) then next_link.click else break end<br>end<br>





рдЬрд╣рд╛рдВ рдХреЛрдб рдореЗрдВ рдПрдХ рджреАрд░реНрдШрд╡реГрддреНрдд рд╣реЛрддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕реАрдзрд╛ рдкреБрд▓ рд╣реЛрддрд╛ рд╣реИред рд╡рд╢реАрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рд▓реЛрднрди рд╣реИ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВ рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде:



ff.div(:id,"resultsList").divs.each.do |div|<br> if (div.class_name != "module") then next end<br> ...<br>end<br>





рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рджрд┐рд╡рд╛ рд╕реЗ рд╣реЛрдЯрд▓ рдХрд╛ рдирд╛рдо рдФрд░ рдореВрд▓реНрдп рдирд┐рдХрд╛рд▓реЗрдВ:



m = div.h2(:class,"property-name").html.match(/propertyId=(\d+)[^<>]*>([^<>]*)<\/a[^<>]*>/)<br>data["id"] = m[1] unless m.nil?<br>data["name"] = m[2] unless m.nil?<br>data["price"] = div.h3(:class,"price").text<br>





рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЛрдо рдЯреНрд░реА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╡реЙрдЯрд░рд┐рд░ рдХрдорд╛рдВрдб рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд░реЛрдз рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдПрдХ рд╕реЗрдХрдВрдб рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рд╣реА рд╕реЗрдХрдВрдб рдореЗрдВ рдкреВрд░реЗ рдбреЛрдо рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ рдФрд░ рддреБрд░рдВрдд рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ:



ff.div(:id,"resultsList").html.split(/<div[^<>]*class\s*=\s*["']?module["']?[^<>]*>/).each do |str|<br>m = str.match(/<a[^<>]*propertyId=(\d+)[^<>]*>([\s\S]*?)<\/a[^<>]*>/)<br> data["id"] = m[1] unless m.nil?<br> data["name"] = m[2] unless m.nil?<br> m = str.match(/<h3[^<>]*class\s*=\s*["']?price["']?[^<>]*>([\s\S]*?)<\/h3[^<>]*>/)<br> data["price"] = m[1] unless m.nil?<br>end<br>





рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдХреЗрд╡рд▓ рд╡реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдлрд╝реЙрд░реНрдо рднрд░рдирд╛ рдФрд░ рд╕рдмрдорд┐рдЯ рдХрд░рдирд╛, js рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдЕрдВрддрд┐рдо HTML рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рд╣рд╛рдВ, рд╡рд┐рдпрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрд▓реАрдореЗрдВрдЯ рдПрд▓рд┐рдореЗрдВрдЯ рд╡реИрд▓реНрдпреВ рдПрдХ рдбреЛрдо рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рд╕реНрдЯреНрд░реАрдо рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд▓рдЧрддрд╛ рд╣реИред рдХреБрдЫ рджрд┐рд╡рд╛ рдХреЗ рдЕрдВрджрд░ рдмрд╛рд╣рд░ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рдЕрдиреНрдп рджрд┐рд╡рд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдард┐рди рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдмрд╣реБрдд рддреЗрдЬ рд╣реИред рдпрджрд┐ рдРрд╕реЗ рдХрдИ рджрд┐рд╡рд╕ рд╣реИрдВ, рддреЛ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╕реНрддрд░ рдореЗрдВ рд╕рднреА рдХреЛрдб рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИред рдореИрдВрдиреЗ php рдореЗрдВ рдЕрдкрдиреА рдПрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рдРрд╕реА рдмрд╛рдд рд▓рд┐рдЦреА рдереАред



All Articles