LexisNexis Plugin

This thread is intended as a collaboration to build a LexisNexis plugin… unfortunately my skills (and time) doesn’t stretch that far at present, but I’m sure many others would be keen to see this too so lets share efforts.

The most obvious problem with LexisNexis is that it has password protection. This does not necessarily prevent DEVONAgent from searching the database, however, as discussed in a previous thread. With this in mind I’ve set out on a mission to get a plugin developed…

My efforts so far tonight has revealed the following:

  1. LexisNexis is an absolute pain to deconstruct!
  2. LexisNexis uses an abundance of frames
  3. LexisNexis uses javascript to control all the search forms

I’ve started by trying to write “a simple” plugin for LexisNexis Executive. From what I can tell the base URL for the search form is:
web.lexis-nexis.com/executive/sform?

… and the one displaying the results is: web.lexis-nexis.com/executive/doclist?

Both of those obiviously need the required parameters posted to them, which is where I’m currently stuck.

The search form calls on the following javascripts:
web.lexis-nexis.com/executive/js … ght.js?v=3
web.lexis-nexis.com/executive/js/cookie.js?v=3
web.lexis-nexis.com/executive/js/search.js?v=3
web.lexis-nexis.com/executive/js/allnews.js?v=3
web.lexis-nexis.com/executive/js … mon.js?v=3
web.lexis-nexis.com/executive/js/image.js?v=3

The javascripts are all viewable without logging in, but the forms are not. For your convenience I’ve posted the source to the “sform” search page below. If anyone has any suggestions on how to search this database then please let people know! I will post my own progress if it is at all fruitfull…

The LexisNexis database can also be accessed if you have an Athens account (which is what I am using).


<HTML>
<HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<LINK REL="stylesheet" TYPE="text/css" HREF="css/copyright.css">
<SCRIPT LANGUAGE="JavaScript" SRC="js/copyright.js?v=3"></SCRIPT>

<SCRIPT LANGUAGE="JavaScript" SRC="js/cookie.js?v=3"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="js/search.js?v=3"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="js/allnews.js?v=3"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="js/execommon.js?v=3"> </SCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="js/image.js?v=3"></SCRIPT>


<SCRIPT LANGUAGE="JavaScript">
<!--
var baseFormName="allnewsplus_en.html";


  PrjRefFlag = false;


preloadimages("image/needhelp_over_en.gif");

// -->
</SCRIPT>
<LINK REL="stylesheet" TYPE="text/css" HREF="css/sform.css">

</HEAD>

<BODY onLoad="initPage()" onUnload="cleanup()">

<FORM ACTION="search" NAME="theForm" METHOD="POST" TARGET="main">
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
<TR>
<TD CLASS="separator" NOWRAP COLSPAN="6"><IMG SRC="image/space_de.gif" WIDTH="16" HEIGHT="9" ALIGN="BOTTOM" BORDER="0"></TD>
</TR>

<TR>
<TD WIDTH=24 NOWRAP><A HREF=JavaScript:top.openHelp("hlpexNewsSrcMtrl_en.html")>
<IMG SRC="image/help_en.gif" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="0"></A></TD>
<TD VALIGN="MIDDLE" NOWRAP COLSPAN="2">
<B>Source</B></TD>
<TD NOWRAP VALIGN="MIDDLE" COLSPAN="1">
<SELECT NAME="srcInfo" size="1" OnChange='reopenPage(true)'>
<OPTION VALUE="8399,148107;news;allnws,noneng;All News, All Languages;">All News, All Languages</OPTION><OPTION VALUE="8399;news;allnws;All News in English;">All News in English</OPTION><OPTION VALUE="237924;NEWS;MWP;Major World Publications;">Major World Publications</OPTION><OPTION VALUE="238672;NEWS;MWN;Major World Newspapers;">Major World Newspapers</OPTION><OPTION VALUE="8412;NEWS;WIRES;Global News - newswires;">Global News - newswires</OPTION><OPTION VALUE="138200;asiapc;allnws;Asia/Pacific News;">Asia/Pacific News</OPTION><OPTION VALUE="12435;news;nieuws;European News - Dutch only;">European News - Dutch only</OPTION><OPTION VALUE="5759;europe;allnws;European News - English only;">European News - English only</OPTION><OPTION VALUE="5826;news;presse;European News - French only;">European News - French only</OPTION><OPTION VALUE="5949;news;zeitng;European News - German only;">European News - German only</OPTION><OPTION VALUE="5950;news;stampa;European News - Italian only;">European News - Italian only</OPTION><OPTION VALUE="222705,166103,172820;EUROPE;CINCOD,ELPAIS,EFENEW;European News - Spanish only;">European News - Spanish only</OPTION><OPTION VALUE="139186;uk;ukpubs;UK News;">UK News</OPTION><OPTION VALUE="139185;UK;UKPAPR;UK News - newspapers only;">UK News - newspapers only</OPTION><OPTION VALUE="140954;news;us;US News;">US News</OPTION><OPTION VALUE="234642;news;web;NEXIS(R) Web Search;">NEXIS(R) Web Search</OPTION><OPTION VALUE="227171,5859;news;gnw,fintme;FT and Global News Wire;">FT and Global News Wire</OPTION>
</SELECT>  
<A HREF="javascript:top.openHelp('hlpexNewsSrcList_en.html')"><IMG SRC="image/guide_en.gif" BORDER="0" NATURALSIZEFLAG="0" ALT="Source List" VALIGN="MIDDLE"></A></TD>
</TR>

<TR>
<TD CLASS="separator" NOWRAP COLSPAN="6"><IMG SRC="image/space_en.gif" WIDTH="16" HEIGHT="1" ALIGN="BOTTOM" BORDER="0"></TD>
</TR>

<TR>
<TD WIDTH=24 NOWRAP><A HREF=JavaScript:top.openHelp("hlpexNewsSrchTerm_en.html")>
<IMG SRC="image/help_en.gif" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="0"></A></TD>
<TD VALIGN="MIDDLE" NOWRAP COLSPAN="2">
<B>Search terms</B></TD>
<TD VALIGN="MIDDLE" NOWRAP COLSPAN="3" >
<INPUT TYPE="TEXT" NAME="1" VALUE="" SIZE="62" MAXLENGTH="1000"></TD>
</TR>

<TR>
<TD WIDTH=24 NOWRAP ><A HREF=JavaScript:top.openHelp("hlpexNewsAddlTerm_en.html")>
<IMG SRC="image/help_en.gif" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="0"></A></TD>
<TD VALIGN="MIDDLE" NOWRAP COLSPAN="2" >
<B>Additional terms</B></TD>
<TD VALIGN="MIDDLE" NOWRAP COLSPAN="3" >
<INPUT TYPE="TEXT" NAME="2" VALUE="" SIZE="62" MAXLENGTH="1000"></TD>
</TR>

<TR>
<TD WIDTH=24 NOWRAP ><A HREF=JavaScript:top.openHelp("hlpexRstMajStry_en.html")>
<IMG SRC="image/help_en.gif" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="0"></A></TD>
<TD VALIGN="MIDDLE" NOWRAP COLSPAN="6" >
<SCRIPT>
  var checkboxText = "Restrict search to major stories";
  var isCheckboxChecked = "";
  var isHiddenChecked = "";
  var isChecked = "";
  if (isCheckboxChecked == "CHECKED" || isHiddenChecked == "CHECKED")
    isChecked = "CHECKED";
 
  isChecked = "";//default to checked on initial load of page
  initializeMMCheckbox(document.theForm, isChecked, checkboxText);
</SCRIPT>
</TR>

<TR>
<TD WIDTH=24 NOWRAP ><A HREF=JavaScript:top.openHelp("hlpexWebSource_en.html")>
<IMG SRC="image/help_en.gif" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="0"></A></TD>
<TD VALIGN="MIDDLE" NOWRAP COLSPAN="6" >
<SCRIPT>
  var checkboxText = "Include web sources";
  var isCheckboxChecked = "";
  var isHiddenChecked = "";
  var isChecked = "";
  if (isCheckboxChecked == "CHECKED" || isHiddenChecked == "CHECKED")
    isChecked = "CHECKED";
 
  initializeNexWebCheckbox(document.theForm, isChecked, checkboxText);
</SCRIPT>
</TD>
</TR>
 
<TR>
<TD CLASS="separator" NOWRAP COLSPAN="6"><IMG SRC="image/space_en.gif" WIDTH="16" HEIGHT="1" ALIGN="BOTTOM" BORDER="0"></TD>
</TR>

<TR>
<TD VALIGN="MIDDLE" WIDTH=24 NOWRAP ><A HREF=JavaScript:top.openHelp("hlpexNewsPlusDate_en.html")>
<IMG SRC="image/help_en.gif" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="0"></A></TD>
<TD VALIGN="MIDDLE" NOWRAP ><B>Date</B></TD>
<TD VALIGN="MIDDLE" ALIGN="RIGHT" NOWRAP >
<INPUT TYPE="RADIO" NAME="dateType" CHECKED VALUE="relative"></TD>
<TD NOWRAP COLSPAN="2" >
<SELECT NAME="dateRelative" SIZE="1" OnChange="checkRadioButton(0)">
<OPTION VALUE="0:ALL">All available dates</OPTION>
<OPTION VALUE="0:DY">Today</OPTION>
<OPTION VALUE="1:WK">Previous week</OPTION>
<OPTION VALUE="1:MO">Previous month</OPTION>
<OPTION VALUE="90:DY">Previous 90 days</OPTION>
<OPTION VALUE="6:MO">Previous 6 months</OPTION>
<OPTION VALUE="1:YR">Previous year</OPTION>
<OPTION VALUE="2:YR">Previous 2 years</OPTION>
<OPTION VALUE="5:YR">Previous 5 years</OPTION>
<OPTION VALUE="10:YR">Previous 10 years</OPTION>
<OPTION VALUE="20:YR">Previous 20 years</OPTION>
</SELECT>
</TD>
<TD> </TD>
</TR>

<TR>
<TD> </TD>
<TD> </TD>
<TD VALIGN="MIDDLE" ALIGN="RIGHT" NOWRAP>
<INPUT TYPE="RADIO" NAME="dateType" onClick="checkRadioButton(1)"  VALUE="absolute"></TD>
<TD NOWRAP>
<SELECT NAME="dateSelect" OnFocus="checkRadioButton(1)" OnChange="dateTypeChanged()">
<OPTION VALUE="Previous">Previous</OPTION>
<OPTION VALUE="From">From</OPTION>
<OPTION VALUE="Is">Is</OPTION>
<OPTION VALUE="Before">Before</OPTION>
<OPTION VALUE="After">After</OPTION>
</SELECT>

<SELECT NAME="num" OnFocus="checkRadioButton(1, 'absolute')">
<OPTION VALUE="1">1</OPTION>
<OPTION VALUE="2">2</OPTION>
<OPTION VALUE="3">3</OPTION>
<OPTION VALUE="4">4</OPTION>
<OPTION VALUE="5">5</OPTION>
<OPTION VALUE="6">6</OPTION>
<OPTION VALUE="7">7</OPTION>
<OPTION VALUE="8">8</OPTION>
<OPTION VALUE="9">9</OPTION>
<OPTION VALUE="10">10</OPTION>
<OPTION VALUE="11">11</OPTION>
<OPTION VALUE="12">12</OPTION>
<OPTION VALUE="13">13</OPTION>
<OPTION VALUE="14">14</OPTION>
<OPTION VALUE="15">15</OPTION>
<OPTION VALUE="16">16</OPTION>
<OPTION VALUE="17">17</OPTION>
<OPTION VALUE="18">18</OPTION>
<OPTION VALUE="19">19</OPTION>
<OPTION VALUE="20">20</OPTION>
<OPTION VALUE="30">30</OPTION>
<OPTION VALUE="40">40</OPTION>
<OPTION VALUE="50">50</OPTION>
<OPTION VALUE="60">60</OPTION>
<OPTION VALUE="70">70</OPTION>
<OPTION VALUE="80">80</OPTION>
<OPTION VALUE="90">90</OPTION>
<OPTION VALUE="100">100</OPTION>
</SELECT>

<SELECT NAME="unit" OnFocus="checkRadioButton(1, 'absolute')">
<OPTION VALUE="DY">days</OPTION>
<OPTION VALUE="WK">weeks</OPTION>
<OPTION VALUE="MO">months</OPTION>
<OPTION VALUE="YR">years</OPTION>
</SELECT>
<TR>
<TD CLASS="separator" NOWRAP COLSPAN="6"><IMG SRC="image/space_en.gif" WIDTH="16" HEIGHT="1" ALIGN="BOTTOM" BORDER="0"></TD>
</TR>


<TR>
<TD NOWRAP COLSPAN="3"></TD>
<TD NOWRAP COLSPAN="2">


<script language="javascript">
<!--
preloadimages("image/clear_over_en.gif",
              "image/add_over_en.gif",
              "image/clear_rc_over_en.gif");
//--></script>

<INPUT TYPE="IMAGE" SRC="image/search_en.gif" NAME="srch" BORDER=0 onClick="return _refFrame.doSearch()"><A HREF="JavaScript:_refFrame.resetForm()"     
   ONMOUSEOVER="clear.src='image/clear_rc_over_en.gif'"
   ONMOUSEOUT="clear.src='image/clear_rc_en.gif'"><IMG 
SRC="image/clear_rc_en.gif" NAME="clear" BORDER=0></A>
</TD>
<TD VALIGN="BOTTOM">
<DIV ALIGN="RIGHT">
<A HREF=JavaScript:top.openHelp("hlpexNewsSrchTip_en.html")
  ONMOUSEOVER="top.changeImages(self,'tip', 'image/needhelp_over_en.gif');"
  ONMOUSEOUT="top.changeImages(self,'tip', 'image/needhelp_en.gif');">
<IMG SRC="image/needhelp_en.gif" NAME="tip" BORDER=0></A></DIV></TD>
</TR>
</TABLE>

<INPUT TYPE="hidden" NAME="_stateList" VALUE="srcInfo">
<INPUT TYPE="hidden" NAME="_form" VALUE="allnewsplus_en.html">
<INPUT TYPE="hidden" NAME="_formType" VALUE="allnewsplus.html">
<INPUT TYPE="hidden" NAME="_sslist" VALUE="genSrcSel">
<INPUT TYPE="hidden" NAME="_startdoc" VALUE="1">
<INPUT TYPE="hidden" NAME="_numdocs" VALUE="25">
<INPUT TYPE="hidden" NAME="_search" VALUE="[1-2-mm/($1)][1-2+mm/(terms($1) or hlead($1))][1+2-mm/($1) and ($2)][1+2+mm/(terms($1) or hlead($1)) and ($2)]">
<INPUT TYPE="hidden" NAME="_dateRst" VALUE="[dateFrom-dateTo-dateIs/and date (geq $dateFrom)][dateTo-dateFrom-dateIs/and date (leq $dateTo)][dateFrom+dateTo-dateIs/and date(geq $dateFrom and leq $dateTo)][dateIs-dateFrom-dateTo/ and date is ($dateIs)]">
<INPUT TYPE="hidden" NAME="_session" VALUE="16885d9e-c99c-11da-ac04-00000aac490b.1.3322241119.453495. .0.0">
<INPUT TYPE="hidden" NAME="_state" VALUE="_lang%a4en%a3jsVer%a4?v=3%a3adminOptions%a41%25a4%25a32%25a4%25a33%25a4%25a34%25a4%25a35%25a4%25a36%25a4%25a37%25a4%25a38%25a4%25a39%25a4%25a310%25a4%25a311%25a4%25a312%25a4%25a313%25a4%25a314%25a4%25a315%25a4%25a316%25a4%25a317%25a4%25a318%25a4%25a319%25a4%25a320%25a4%25a321%25a4%25a322%25a4%25a323%25a4%25a324%25a4%25a325%25a4%25a326%25a4%25a327%25a4%25a328%25a4%25a329%25a4%25a330%25a4%25a331%25a4%25a332%25a4%25a333%25a4%25a334%25a4%25a335%25a4%25a336%25a4%25a337%25a4%25a338%25a4%25a339%25a4%25a340%25a4%25a341%25a4%25a342%25a4%25a343%25a4%25a344%25a4%25a345%25a4%25a346%25a4%25a347%25a4%25a348%25a4%25a349%25a4%25a350%25a4%25a3%a3">
<INPUT TYPE="hidden" NAME="wchp" VALUE="dGLzVzz-zSkSl">
<INPUT TYPE="hidden" NAME="_md5" VALUE="139e0d970a0b0b53ca0a9f74b116439d">


<INPUT TYPE="HIDDEN" NAME="sfldVals" VALUE="">


</FORM>

<SCRIPT LANGUAGE="JavaScript"><!--
copyright('en');
//--></SCRIPT>
<DIV CLASS="formname">All news plus (EN)</DIV>
</BODY>
</HTML>

SInce I do not have access to any of their websites I can’t help you here. However, these JavaScripts probably use HTTP POST to send information to the site. It is possible to use this with DA. Check the XML keyword documentation for the “Post” key. This would allow you to transfer data back to the server in a form it could understand. You need to find the form data keys from the JavaScript source.

So how come this page is different than the rest and I have to horizontal scroll and scroll to see all the way to the right of this? None of the other threads were like that.

Seems that the code block isn’t rewrapped but Eric is aware of the issue.

I have manged to find a site which describes the LexisNexis API… Unfortunately I don’t have the time to get my head around this yet, but posting it here in case anyone else shares my interest in getting this working.

http://www.lexisnexis.com/webserviceskit/developers/

Follow the link to “LexisNexis Direct Advanced” for an overview of the XML involved.

Let me know how you get on if you try this out!