perl 爬取数据<1>

爬虫抓取理财产品
use  LWP::UserAgent;
use POSIX;
use DBI;  
$user="root";  
$passwd="11111111";  
$dbh="";  
$dbh = DBI->connect("dbi:mysql:database=zjzc_vote;host=11.55.5.57;port=3306",$user,$passwd) or die "can't connect to  database ". DBI-errstr;  
$dbh->do("SET NAMES utf8"); 
use utf8;
use HTML::TreeBuilder;
if (-f "data.html"){
open FILE,">data.html";
close FILE;}
open DATAFH,">>data.html" || die "open data file failed:$!"; 
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
$ua->agent("Mozilla/8.0");

my $response = $ua->get('https://licai.yingyinglicai.com/product/list.htm');


if ($response->is_success) {
 print DATAFH  $response->decoded_content;  # or whatever
# print   $response->decoded_content;  # or whatever
  use HTML::TreeBuilder::XPath;
  my $tree= HTML::TreeBuilder::XPath->new;
  $tree->parse_file( "data.html");
   my @nb=$tree->findvalues( '/html/body//div[@class="fresh"]');
  foreach (@nb){print "Product is $_\n";
   chomp $_;
    my $XDATE = strftime("%Y%m%d%H%M%S",localtime());
    my $sql = "SELECT count(*)   FROM p2p_product  where productname='$_' and cname='yylc'"; 
    my $sth = $dbh->prepare($sql);    
    $sth->execute();  

  my  $count = $sth->fetchrow_array();
  if ($count == 0 ){
 my $host = "http://211.149.197.95:8888/sms.aspx?action=send&userid=74&account=SDK00026&password=960579&mobile=18957175628&content=$_&sendTime=&extno=";
my $response = $ua->get($host);
  $ua->default_headers;
if ($response->is_success) {
 print $response->decoded_content;  # or whatever
}
   $dbh->do("insert into p2p_product  values ('$_','$XDATE','yylc')") or $!;
                  }
  
};



              }
              else {
               die $response->status_line;
               };

转载于:https://www.cnblogs.com/zhaoyangjian724/p/6200396.html

### 影刀RPA爬取不规则数据的方法与教程 #### 一、影刀RPA简介及其适用场景 影刀RPA是一款自动化工具,能够模拟人类操作计算机的行为,完成重复性和高频率的任务。对于爬取不规则数据这一需求,可以通过配置影刀RPA中的特定功能模块来实现复杂逻辑的操作[^1]。 --- #### 二、解决不规则数据爬取的核心思路 在面对结构化程度较低或者动态变化频繁的数据源时,传统的固定路径提取方式可能无法满足需求。此时需要引入更灵活的技术手段: 1. **基于OCR技术识别非标准文本** 对于图片形式展示的文字内容(如验证码、截图),可集成光学字符识别(OCR)插件到工作流中,先转换成机器可读字符串再进一步解析处理。 2. **利用正则表达式匹配杂乱字段** 针对HTML页面内嵌入的半结构化信息片段,则借助强大的模式匹配算法——即Perl兼容的正则表达式引擎来进行精准定位并抽取目标要素。 3. **自定义脚本增强交互能力** 当遇到某些特殊业务逻辑难以单纯依靠图形界面拖拽构建出来的时候,允许用户编写少量JavaScript代码片段注入至浏览器环境执行额外动作就显得尤为重要了。 4. **应对AJAX加载延迟问题** 如果目标网站采用了异步请求更新部分内容而非一次性返回全部DOM树的话,那么就需要设置合理的等待时间间隔直至所需元素完全呈现后再继续后续步骤;另外还可以监听网络通信捕获原始JSON响应包从而绕过前端渲染层直接拿到纯净数据。 --- #### 三、具体实施案例分析 假设我们要从某电商平台上采集商品详情页里的各种属性参数值(名称、价格区间、库存状态等),但由于不同卖家上传模板差异较大造成布局混乱不堪甚至存在隐藏域等情况发生怎么办呢? ##### 解决方案如下所示: ```python from selenium import webdriver import time import re def extract_product_info(url): driver = webdriver.Chrome() try: # 打开网页链接 driver.get(url) # 显式休眠几秒让Ajax充分渲染完毕 time.sleep(5) # 获取整个body区域html代码作为待检索对象 body_html = driver.page_source # 定义多个预设好的正则规则分别对应各类特征项 patterns_dict={ 'title':r'<h\d.*?>(.*?)</h\d>', 'price_range':r'\$([\d\.]+)\s*-\s*\$([\d\.]+)', 'stock_status':r'In Stock|Out of Stock' } result={} for key,pattern in patterns_dict.items(): match=re.search(pattern,body_html,re.IGNORECASE | re.DOTALL ) if match: value=match.group().strip() if len(match.groups())==1 else list(map(str.strip,[g for g in match.groups()])) result[key]=value return result finally: driver.quit() if __name__=='__main__': url='https://example.com/product/abcde' info=extract_product_info(url) print(info) ``` 上述示例程序展示了如何综合运用Selenium库控制真实Chrome实例访问指定URL地址之后,耐心等候一段时间确保所有依赖资源均已加载完成后才开始正式作业过程。接着采用Python内置re模块配合精心设计过的若干条目逐一扫描全文寻找符合条件的结果集最后封装起来供调用方消费使用[^2]。 --- #### 四、注意事项与其他建议 尽管如此先进的智能化平台已经极大地简化了许多繁琐的手动劳动环节,但仍需注意以下几点事项才能更好地发挥其潜力价值最大化效果达到预期目的: - 确认目标站点不存在反爬机制干扰正常运行轨迹; - 提前规划好异常情况下的容错恢复策略以免中断整体进度计划表安排被打乱; - 不断积累经验教训总结规律提炼通用组件便于未来快速复制推广相似项目开发周期缩短成本降低效率提升显著优势明显可见成效立竿见影成果斐然令人满意无比欣慰感慨万千! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值