<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>internet-explorer on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/internet-explorer/</link>
    <description>Recent content in internet-explorer on S Anand</description>
    <generator>Hugo -- 0.156.0</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 17 Mar 2009 13:04:50 +0000</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/internet-explorer/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Automating Internet Explorer with jQuery</title>
      <link>https://www.s-anand.net/blog/automating-internet-explorer-with-jquery/</link>
      <pubDate>Sun, 18 May 2008 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/automating-internet-explorer-with-jquery/</guid>
      <description>&lt;p&gt;Most of my &lt;a href=&#34;http://en.wikipedia.org/wiki/Screen_scraping&#34;&gt;screen-scraping&lt;/a&gt; so far has been through Perl (typically &lt;a href=&#34;http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize.pm&#34;&gt;WWW::Mechanize&lt;/a&gt;). The big problem is that it doesn&#39;t support Javascript, which can often be an issue:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b&gt;The content may be Javascript-based&lt;/b&gt;. For example, &lt;a href=&#34;http://www.amazon.com/&#34;&gt;Amazon.com&lt;/a&gt; shows the bestseller book list only if you have Javascript enabled. So if you&#39;re scraping the Amazon main page for the books bestseller list, you won&#39;t get it from the static HTML.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;The navigation may require Javascript&lt;/b&gt;. Instead of links or buttons in forms, you might have Javascript functions. Many pages use these, and not all of them degrade gracefully into HTML. (Try using &lt;a href=&#34;http://video.google.com/&#34;&gt;Google Video&lt;/a&gt; without Javascript.)&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;The login page uses Javascript&lt;/b&gt;. It creates some crazy session ID, and you need Javascript to reproduce what it does.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;You might be testing a Javascript-based web-page&lt;/b&gt;. This was my main problem: how do I automate testing my pages, given that I &lt;a href=&#34;http://localhost/Javascript_error_logging.html&#34;&gt;make a lot of mistakes&lt;/a&gt;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are many approaches to overcoming this. The easiest is to use &lt;a href=&#34;http://search.cpan.org/~abeltje/Win32-IE-Mechanize-0.009/lib/Win32/IE/Mechanize.pm&#34;&gt;Win32::IE::Mechanize&lt;/a&gt;, which uses Internet Explorer in the background to actually load the page and do the scraping. It&#39;s a bit slower than scraping just the HTML, but it&#39;ll get the job done.&lt;/p&gt;
&lt;p&gt;Another is to use &lt;a href=&#34;http://www.mozilla.org/rhino/&#34;&gt;Rhino&lt;/a&gt;. &lt;a href=&#34;http://ejohn.org/&#34;&gt;John Resig&lt;/a&gt; has written &lt;a href=&#34;http://ejohn.org/blog/bringing-the-browser-to-the-server/&#34;&gt;env.js&lt;/a&gt; that mimics the browser environment, and on most simple pages, it handles the Javascript quite well.&lt;/p&gt;
&lt;p&gt;I would rather have a hybrid of both approaches. I don&#39;t like the WWW::Mechanize interface. I&#39;ve gotten used to &lt;a href=&#34;http://jquery.com&#34;&gt;jQuery&lt;/a&gt;&#39;s rather powerful &lt;a href=&#34;http://docs.jquery.com/Selectors&#34;&gt;selectors&lt;/a&gt; and &lt;a href=&#34;https://www.s-anand.net/blog/chaining-functions-in-javascript/&#34;&gt;chainability&lt;/a&gt;. So I&#39;ll tell you a way of using jQuery to screen-scrape offline using &lt;a href=&#34;http://www.activestate.com/Products/activepython/&#34;&gt;Python&lt;/a&gt;. (It doesn&#39;t have to be Python. &lt;a href=&#34;http://www.activestate.com/Products/activeperl/&#34;&gt;Perl&lt;/a&gt;, &lt;a href=&#34;http://www.ruby-lang.org/&#34;&gt;Ruby&lt;/a&gt;, &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ey73d9d3(VS.85).aspx&#34;&gt;Javascript&lt;/a&gt;... any scripting language that can use COM on Windows will work.)&lt;/p&gt;
&lt;p&gt;Let&#39;s take &lt;a href=&#34;http://video.google.com/&#34;&gt;Google Video&lt;/a&gt;. Currently, it relies almost entirely on Javascript. The video marked in red below appears only if you have Javascript.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-video_2508656885_o-png.webp&#34; title=&#34;Google Video screenshot&#34;&gt;&lt;img src=&#34;https://www.s-anand.net/blog/assets/flickr-google-video_2508656885_o-png.webp&#34; width=&#34;500&#34; height=&#34;280&#34; alt=&#34;The left box showing the top video uses Javascript&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&#39;d like an automated way of checking what video is on top on Google Video every hour, and save the details. Clearly a task for automation, and clearly not one for pure HTML-scraping.&lt;/p&gt;
&lt;p&gt;I know the video&#39;s details are stored in elements with the following IDs (thanks to &lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/1095&#34;&gt;XPath checker&lt;/a&gt;):&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;ID&lt;/th&gt;&lt;th&gt;What&#39;s there&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;hs_title_link&lt;/td&gt;&lt;td&gt;Link to the video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;hs_duration_date&lt;/td&gt;&lt;td&gt;Duration and date&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;hs_ratings&lt;/td&gt;&lt;td&gt;Ratings. The stars indicate the rating and the span.Votes element inside it has the number of people who rated it.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;hs_site&lt;/td&gt;&lt;td&gt;The site that hosts the video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;hs_description&lt;/td&gt;&lt;td&gt;Short description&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;So I could do the following on Win32::IE::Mechanize.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;use&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;Win32::IE::Mechanize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;my&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$ie&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;Win32::IE::Mechanize&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visible&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ie&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://video.google.com/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;my&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;@links&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$ie&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;links&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ... then what?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I &lt;i&gt;could&lt;/i&gt; go through each link to extract the &lt;code&gt;hs_title_link&lt;/code&gt;, but there&#39;s no way to get the other stuff.&lt;/p&gt;
&lt;p&gt;Instead, we could take advantage of a couple of facts:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b&gt;Internet Explorer exposes a COM interface&lt;/b&gt;. That&#39;s what Win32::IE::Mechanize uses. You can use it in any scripting language (&lt;a href=&#34;http://www.activestate.com/Products/activeperl/&#34;&gt;Perl&lt;/a&gt;, &lt;a href=&#34;http://www.ruby-lang.org/&#34;&gt;Ruby&lt;/a&gt;, &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ey73d9d3(VS.85).aspx&#34;&gt;Javascript&lt;/a&gt;, ...) on Windows to control IE.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;You can load jQuery on to any page&lt;/b&gt;. Just add a &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag pointing to jQuery. Then, &lt;b&gt;you can call jQuery from the scripting language!&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let&#39;s take this step by step. This Python program opens IE, loads &lt;a href=&#34;http://video.google.com/&#34;&gt;Google Video&lt;/a&gt; and prints the text.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Start Internet Explorer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;win32com.client&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ie&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;win32com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dispatch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;InternetExplorer.Application&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Display IE, so you&amp;#39;ll know what&amp;#39;s happening&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ie&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;visible&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Go to Google Video&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ie&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;navigate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://video.google.com/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Wait till the page is loaded&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;time&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sleep&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ie&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Busy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sleep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Print the contents&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Watch out for Unicode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ie&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;innertext&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The next step is to add jQuery to the Google Video page.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Add the jQuery script to the browser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;addJQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://jqueryjs.googlecode.com/files/jquery-1.2.4.js&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;document&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;document&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;window&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parentWindow&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;head&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getElementsByTagName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;head&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;createElement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;script&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;text/javascript&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;appendChild&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sleep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;addJQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ie&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now the variable &lt;code&gt;jQuery&lt;/code&gt; contains the Javascript jQuery object. From here on, you can hardly tell if you&#39;re working in Javascript or Python. Below are the expressions (&lt;i&gt;in Python!&lt;/i&gt;) to get the video&#39;s details.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Video title: &amp;#34;McCain&amp;#39;s YouTube Problem ...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;#hs_title_link&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Title link: &amp;#39;/videoplay?docid=1750591377151076231&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;#hs_title_link&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;attr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;href&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Duration and date: &amp;#39;3 min - May 18, 2008 - &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;#hs_duration_date&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Rating: 5.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;#hs_ratings img&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Number of ratings &amp;#39;(8,288 Ratings) &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;#hs_ratings span.Votes&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Site: &amp;#39;Watch this video on youtube.com&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;#hs_site&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Video description&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;#hs_description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This wouldn&#39;t have worked out as neatly in Perl, simply because you&#39;d need to use &lt;code&gt;-&amp;gt;&lt;/code&gt; instead of &lt;code&gt;.&lt;/code&gt; (dot). With Python (and with Ruby and Javascript on cscript), you can almost cut-and-paste jQuery code.&lt;/p&gt;
&lt;p&gt;If you want to click on the top video link, use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;jQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;#hs_title_link&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;click&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In addition, you can use the keyboard as well. If you want to type &lt;code&gt;username TAB password&lt;/code&gt;, use this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;shell&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;win32com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dispatch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;WScript.Shell&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;shell&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sendkeys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;username&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{TAB}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;password&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can use any of the arrow keys, control keys, etc. Refer to the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/8c6yea83(VS.85).aspx&#34;&gt;SendKeys Method on MSDN&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Franky&lt;/strong&gt; &lt;em&gt;18 May 2008 12:00 pm&lt;/em&gt;:
Holy crap. I am in way over my head here, but this is pretty sweet stuff if I&amp;rsquo;m reading it correctly. Thanks for the info.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.mathema.com&#34;&gt;Alessandro&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;5 Jul 2009 11:50 am&lt;/em&gt;:
The idea is really good. Unfortunately it doesn&amp;rsquo;t seem to work under Perl. When a JS function/script is invoked (jQuery is a JS function) IE does not return a COM object and the control from Perl is lost.
There are, of course, methods to overcome the obstacle but not as simple as $window-&amp;gt;jQuery!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anonymous&lt;/strong&gt; &lt;em&gt;5 Mar 2010 11:25 pm&lt;/em&gt;:
Wow, kick ass! Exactly what I was looking for. Used AutoIt on a host machine to instantiate the IE object and thanks to you was able to use jQuery to do my scraping. Combined with the IE Developer Toolbar, this has probably saved me weeks of time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manikandan&lt;/strong&gt; &lt;em&gt;19 Nov 2009 3:30 pm&lt;/em&gt;:
I am trying to do a screenscrape and the code executes jquery.
Whenever I had to execute javascript i could execute it by
ie.navigate(javascript:&amp;hellip;.)
But when I tried the same thing with jquery it does not execute.
The code behind is something like this
I tried ie.navigate(jQuery1258644477483=&amp;ldquo;2&amp;rdquo;)
It did not thing.
Appreciate your help!!!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://developerquestion.com/powershell-including-jquery-in-internetexplorer-application/&#34;&gt;Powershell: Including jQuery in InternetExplorer.Application | DeveloperQuestion.com&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;30 Oct 2010 1:32 pm&lt;/em&gt; &lt;em&gt;(pingback)&lt;/em&gt;:
[&amp;hellip;] script document I Followed this article, explaining how to accomplish in Python what I want to do in Powershell. So now I have this [&amp;hellip;]&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Joe&lt;/strong&gt; &lt;em&gt;27 Nov 2010 2:42 pm&lt;/em&gt;:
Hello Mr. Anand,
I am trying to do this in Ruby, but I am not sure how to start. Maybe I am lucky and you have you moved to ruby since May 2008? You start with import win32com.client, and I suppose that is to support an IE browser API. I have Firefox, Chrome, Safari and others available to me.
The basic aim I guess is to inject JQuery into my page object. Mechanize provides me a page. I am that far. How do I it give it JQuery superpowers. Mechanize uses Nokogiri selectors under the hood. But I would love to standardize on JQuery because it&amp;rsquo;s useful in so many other contexts&amp;hellip;in the way that regex is.
Joe&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://fatal-errors.com/powershell-using-jquery-through-internetexplorer-application/86850&#34;&gt;Powershell: Using jQuery through InternetExplorer.Application&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;12 Feb 2012 2:48 am&lt;/em&gt; &lt;em&gt;(pingback)&lt;/em&gt;:
[&amp;hellip;] followed this article, explaining how to spice up an Internet Explorer COM-Object with jQuery. While the author used [&amp;hellip;]&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Netscape Opera Internet Explorer and Mozilla</title>
      <link>https://www.s-anand.net/blog/netscape-opera-internet-explorer-and-mozilla/</link>
      <pubDate>Sat, 16 Oct 2004 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/netscape-opera-internet-explorer-and-mozilla/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://news.com.com/A+decade+on+the+Web+with+Netscape/2009-1032_3-5406640.html?tag=nl&#34;&gt;A decade with Netscape&lt;/a&gt;. I&amp;rsquo;ve been wavering between IE, Opera and Mozilla over the last few months, and have come a full circle.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;IE: Default browser. Works with BCG&amp;rsquo;s intranet.&lt;br&gt;
Opera: Great offline browsing. Fast downloading. Tabbed browsing. Mouse gestures.&lt;br&gt;
Mozilla: Powerful plugins.&lt;br&gt;
IE: &lt;a href=&#34;http://a9.com/&#34;&gt;A9 toolbar&lt;/a&gt;. Fantastic way of searching.&lt;br&gt;
IE again: &lt;a href=&#34;http://desktop.google.com/&#34;&gt;Google desktop&lt;/a&gt;. Solves all offline browsing problems I had.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    <item>
      <title>MSN hates Opera</title>
      <link>https://www.s-anand.net/blog/msn-hates-opera/</link>
      <pubDate>Sun, 09 Feb 2003 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/msn-hates-opera/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://my.opera.com/dev/discussion/openweb/20030206/&#34;&gt;MSN&amp;rsquo;s attempt to foil Opera&lt;/a&gt;. &lt;a href=&#34;http://www.jacobsen.no/anders/blog/archives/2003/02/07/msncom_plays_dirty_with_opera.html&#34;&gt;via andersja&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>101 things you can do in Mozilla</title>
      <link>https://www.s-anand.net/blog/101-things-you-can-do-in-mozilla/</link>
      <pubDate>Fri, 15 Nov 2002 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/101-things-you-can-do-in-mozilla/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.xulplanet.com/ndeakin/arts/reasons.html&#34;&gt;101 things you can do in Mozilla and not IE&lt;/a&gt;. But apart from 1. Tabbed browsing and 2. Popup blocking, I don&amp;rsquo;t quite use the other features. Mozilla (and Opera) still need some catching up to do. &lt;a href=&#34;http://www.newarchitectmag.com/daily/&#34;&gt;via New Architect&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Move away from IE</title>
      <link>https://www.s-anand.net/blog/move-away-from-ie/</link>
      <pubDate>Tue, 12 Mar 2002 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/move-away-from-ie/</guid>
      <description>&lt;p&gt;AOL, and hence its 30 million subscribers, could &lt;a href=&#34;http://www.newsforge.com/article.pl?sid=02/03/08/1957252&amp;amp;mode=thread&#34;&gt;move away from IE&lt;/a&gt; towards Mozilla. That&amp;rsquo;s big.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Block MSN access</title>
      <link>https://www.s-anand.net/blog/block-msn-access/</link>
      <pubDate>Sun, 28 Oct 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/block-msn-access/</guid>
      <description>&lt;p&gt;Microsoft first tries to &lt;a href=&#34;http://news.cnet.com/news/0-1005-200-7655334.html&#34;&gt;block MSN access&lt;/a&gt; to non-IE browsers, and then &lt;a href=&#34;http://news.cnet.com/news/0-1005-200-7660935.html?tag=mn_hd&#34;&gt;surrenders&lt;/a&gt;. I still can&amp;rsquo;t access their photos section through Opera.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>IE6</title>
      <link>https://www.s-anand.net/blog/ie6/</link>
      <pubDate>Thu, 30 Aug 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/ie6/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.microsoft.com/windows/ie/default.htm&#34;&gt;IE6&lt;/a&gt; is out with &lt;a href=&#34;http://www.microsoft.com/windows/ie/downloads/ie6/default.htm&#34;&gt;new features&lt;/a&gt;. My site has already had quite a few hits with people using IE6! BTW, it doesn&amp;rsquo;t have Java or Plugin support.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>OggVorbis</title>
      <link>https://www.s-anand.net/blog/oggvorbis/</link>
      <pubDate>Sat, 23 Jun 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/oggvorbis/</guid>
      <description>&lt;p&gt;Will &lt;a href=&#34;http://www.xiph.org/ogg/vorbis/index.html&#34;&gt;OggVorbis&lt;/a&gt; beat &lt;a href=&#34;http://www.thomson-multimedia.com/gb/06/c01/010614.htm&#34;&gt;MP3 Pro&lt;/a&gt;? Will &lt;a href=&#34;http://www.cnet.com/software/0-3227883-8-6249661-2.html&#34;&gt;Netscape 6.1&lt;/a&gt; beat IE 5.5? Will &lt;a href=&#34;http://www.openbsd.org/29.html&#34;&gt;OpenBSD 2.9&lt;/a&gt; overtake &lt;a href=&#34;http://www.linux.org/&#34;&gt;Linux&lt;/a&gt;? Unlikely. But should be interesting to watch.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Opera 5</title>
      <link>https://www.s-anand.net/blog/opera-5/</link>
      <pubDate>Fri, 08 Jun 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/opera-5/</guid>
      <description>&lt;p&gt;I shifted from Netscape Navigator to Internet Explorer because I could cut and paste tables from IE to Excel. But now that I&amp;rsquo;ve downloaded &lt;a href=&#34;http://www.opera.com&#34;&gt;Opera 5.11&lt;/a&gt;, used its zoom function, it&amp;rsquo;s gesture keys, and so on, I&amp;rsquo;m moving over to Opera. Long live Opera! (Which, given &lt;a href=&#34;http://biz.yahoo.com/rf/010606/n05260410_2.html&#34;&gt;Netscape&amp;rsquo;s fate&lt;/a&gt;, is perhaps no more than a fond hope.)&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Browser stats</title>
      <link>https://www.s-anand.net/blog/browser-stats/</link>
      <pubDate>Thu, 10 Aug 2000 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/browser-stats/</guid>
      <description>&lt;p&gt;The latest &lt;a href=&#34;http://www.ews.uiuc.edu/bstats/latest.html&#34;&gt;browser stats&lt;/a&gt; say that 69% of the world uses, Internet Explorer, while only 27% use Netscape. &lt;a href=&#34;http://browserwatch.internet.com/stats/stats.html&#34;&gt;BrowserWatch&lt;/a&gt; says 57%-26%. &lt;a href=&#34;http://www.cnet.com/internet/0-3779-7-2456267.html?tag=st.cn.1.tlpg.3779-7-2456267&#34;&gt;Netscape 6&lt;/a&gt; might do something about it, given that Microsoft&amp;rsquo;s split.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
