-1

我在我们的 Intranet 页面上提供了一份 dr 保存详细信息的列表。

我需要构建一个实用程序,以便提供的输入日期以某种方式从网页获取卷和序列号详细信息并相应地访问 db2 数据库。

我正在考虑/学习 pyhon 使用 bs4 汤来抓取网页上的数据,但现在我如何将数据放入 iseries 中。这甚至可能吗?

4

1 回答 1

0

您可以使用 sql 函数httpgetclob来读取网页的内容。

这是httpgetclobsql procedure. 该过程将httpgetclob输出接收到一个clob变量中。然后它读取该输出的 256 字节块,将这些块写入输出文件。

这是输出文件:

/* test0244 - web page text contents.        */           
                                                          
CREATE OR REPLACE TABLE TEST0244 (
pageName   char(20),
seqnbr   decimal(7,0),
text     char(256) not null default ' ', 
constraint test0244_pk primary key( pageName, seqnbr )    
) ; 

获取网页内容并写入输出表的 sql 过程:

/* test0244_getWebPage - get contents of web page.    */ 
/*                       Store in table TEST0244.     */ 

CREATE or replace PROCEDURE test0244_getWebPage( 
 in inPageName char(20), 
 in inUrl    char(256) 
 ) 
  LANGUAGE           SQL
  MODIFIES           SQL DATA
  SET OPTION         COMMIT = *NONE 
BEGIN
declare     vSqlCode decimal(5,0) ; 
declare     sqlCode int DEFAULT 0 ;                      
declare      url varchar(2000) ;                         
declare      webClob clob(500000) ;                      
declare      web_lx int ;                                
declare      bx  int ;                                   
declare      rem int default 0 ; 
declare      segSx int ; 
declare      segLx int ; 
declare      segText varchar(2000) ; 
declare      seqnbr decimal(7,0) default 0 ; 

/* clear current page contents.      */               
delete from  test0244 a                               
where        a.pageName = inPageName ;                
                                                      
set        url = inUrl ;                              
set        webClob = SYSTOOLS.httpGetClob( url, '' ) ;
set        web_lx  = length( webClob ) ;              
set        bx = 1 ;                                   
set        segSx = 256 ;                              
set        seqnbr = 0 ;                               
while( bx <= web_lx ) do                              
set        rem = web_lx - bx + 1 ;                    
set        segLx = case when rem >= segSx             
                        then segSx                    
                        else rem end ;                
set        segText = substr( webClob, bx, segLx ) ;   
set        seqnbr  = seqnbr + 1 ;                     
insert into   test0244  ( pageName, seqnbr, text )    
values( inPageName, seqnbr, segText ) ;               
                                                      
set        bx = bx + segLx ;                          
end while ;
END 

调用该过程的代码:

call   test0244_getWebPage ( 'craigslist      ',   
          'https://newjersey.craigslist.org/')     
于 2021-05-28T20:16:06.377 回答