抓取网站数据并且自动发帖到论坛

多站点RSS新闻正文抓取,导入discuz论坛,自动发帖的实现(一) RSS抓取新闻正文。 公司研发部不能上外网,但是公司又希望研发的同事能关注下新闻,了解科技热点,跟上时代潮流。所以搭建了一个discuz论坛, 但内容匮乏。幸运的是搭这台论坛的服务器可以上网的(在两个网络里面)。所以想着要我做一个爬虫工具,通过rss把新闻内容,抓取过来放到公司论坛。   现在已经实现了,同时抓取多个网站上面的数据(IT之家,虎嗅网等等)。 阅读详情

近期本人闲来没事做了一个程序自动从一些BT网站上抓取数据并且自动发帖到我自己的论坛上,试用了几个月效果比较好,现在公布源代码供perl爱好者参考,欢迎广大perl爱好者一起沟通交流。
分几个程序组成
readcokie.pl 获取要上传主机的cookie一次获取永久在主机保存
fatie.pl         抓取源主机数据并自动发帖到目标主机
history.log   保存抓取过的数据
user.txt        发帖时使用的用户列表
..........

具体程序如下
readcokie.pl
======================
# -*- coding: gb2312 -*-
#$ua->post( $url, /%form )
#$ua->post( $url, /@form )
#$ua->post( $url, /%form, $field_name => $value, ... )
#This method will dispatch a POST request on the given $url, with %form or @form providing the key/value pairs for the fill-in form content. Additional headers and content options are the same as for the get() method.
#This method will use the POST() function from HTTP::Request::Common to build the request. See the HTTP::Request::Common manpage for a details on how to pass form content and other advanced features.
#$ua->get( $url )
#$ua->get( $url , $field_name => $value, ... )
#This method will dispatch a GET request on the given $url. Further arguments can be given to initialize the headers of the request. These are given as separate name/value pairs. The return value is a response object. See the HTTP::Response manpage for a description of the interface it provides.
#$ua->agent('Mozilla/5.0');
  use HTTP::Cookies;
  use HTTP::Request::Common qw(POST);
  use LWP::UserAgent;
    $ua = LWP::UserAgent->new;
  open(FILE,'D:/bin/posttools/自动发帖/bt区顶贴/cc8.cnsuk.net新沙加神话/data/user.txt');
  @file=<FILE>;
  for ($i=0;$i<=$#file;$i++){
    chomp($file[$i]);
    ($user,$pass)=split(/,/,$file[$i]);
    $ua->cookie_jar(HTTP::Cookies->new(file => "D://bin//posttools//自动发帖//bt区顶贴//cc8.cnsuk.net新沙加神话//data//$user//cookie.txt",
                                     autosave => 1));
    $req =POST 'http://www1.5hxy.com/bbs/login.asp',
              [UserName => $user,
              Userpass => $pass,
              IsSave => '1',
              Eremite => '1',
              ];
    $res=$ua->request($req);
    $ua->cookie_jar->save;
#     $ua = LWP::UserAgent->close;  
    }

 


fatie.pl
=============================

  use HTTP::Cookies;
  use LWP;
  $ua = LWP::UserAgent->new;
  $ua->agent("Mozilla/8.0";
#初始化参数
$n_file='D:/bin/posttools/自动发帖/bt区顶贴/cc8.cnsuk.net新沙加神话//';

###临时种子文件地址
#定义地址@url @postid @bankuainame 
$hhttp='http://cc8.cnsuk.net';
$url[0]='http://cc9.cnsuk.net/forum-2944-2.html';
$postid[0]='13';
$bankuainame[0]="$hhttp-游戏";

$url[1]='http://cc9.cnsuk.net/forum-2944-1.html'; 
$postid[1]='13';
$bankuainame[1]="$hhttp-游戏";

$url[2]='http://cc9.cnsuk.net/forum-2905-2.html'; 
$postid[2]='13';
$bankuainame[2]="$hhttp-游戏";

$url[3]='http://cc9.cnsuk.net/forum-2905-1.html'; 
$postid[3]='13';
$bankuainame[3]="$hhttp-游戏";
while (1) {
  for ($u=0;$u<=$#url;$u++){
      $htms='';
      $res = $ua->get($url[$u]);
      $htms=$res->content;
      print "获取 $bankuainame[$u] 版块数据 /n";
      #获取后挑出有用的数据
      if ($res->is_success) {
          @html=();
          @html=split(//n/,$htms);
          @link=();
          @tid=();
          @tti=();
          for(@html){
#<a href="thread-50813-1-1.html" style="font-weight: bold;color: green">[04.19][BT游戏最新补丁发布专用贴][暂放]</a><span class="lighttxt">

                #if (m{^<a href="(viewthread/.php/?tid=)(/d+)&.*>(.*)</a>}){
                if (m{^<a href="(thread/-)(/d*)(/-/d*/-/d*/.html)".*?>(.*?)</a>}){
                    push(@link,$1.$2.$3);
                    push(@tid,$2);
                    push(@tti,$4);
                }
          }
      }
      print "挑出有用的数据 $#link 个 /n";
      #历史记录
      open (FILE,$n_file.'data/history.log');
      @history=();
      @history=<FILE>;
      close FILE;
      #用户记录
      open(FILE,$n_file.'data/user.txt');
      @usertxt=();
      @usertxt=<FILE>;
      close FILE;
      #提交记录
      print "读取用户信息 /n";
      #检查帖子是否在历史,不在就发帖
      $chazhao=0;#是否找到0没找到
      for ($x=0;$x<=$#tid;$x++){
        for ($a=0;$a<=$#history;$a++){
            if ($history[$a]==$tid[$x]){
                $a=$#history+1;
                $chazhao=1;   
            }
        }
        print "帖子$tti[$x] $tid[$x] 找到标志为 $chazhao/n";
        if ($chazhao==0){ #如果历史没有就发帖
            #获取源帖子内容
            $url="$hhttp/$link[$x]";
            $res = $ua->get($url);
            $htmls=$res->content;
            #open (FILE,'>D:/bin/posttools/自动发帖/bt区顶贴/bbs.btpig.com猪猪乐园/bin/temp.log'); #debug
            #print FILE $htmls;                                                                    #debug
            #close FILE;                                                                           #debug
            @html=();
            @html=split(//n/,$htmls);
            @torlink=();
            @tortid=();
            @torxylink=();
            @tortti=();
            $zd=0;
            #获取所有种子地址
                for(@html){
                #<a href="viewthread.php?tid=645515&extra=page%3D1" style="font-weight: bold;color: blue">[02.02][原创][美国][二战][二战电影五部][DVDRip][6.1G] 英文字幕</a>
                #<a href="attachment.php?aid=26721" target="_blank" class="bold">金庸群侠传全集★cc8cnsuk.net新沙加神话★VItas★.torrent</a> (2007-4-28 21:12, 17.35 K)<br>

                        if (m{<a href="(attachment/.php/?aid=)(/d+)".+?>(.+/.torrent)</a>}){
                        push(@torlink,$1.$2);
                        push(@tortid,$2);
                        push(@tortti,$3);
                        $zd=1;
                        }
                }
            #找到种子文件才发帖,否则不发帖
            if ($zd==1){
              $userc=int(rand($#usertxt));#选择哪个用户
              chomp($usertxt[$userc]);
              ($user,$pass)=split(/,/,$usertxt[$userc]);
              print "决定用户$userc发帖子/n";
              #获取种子
              @torxylink=();

              for ($f=0;$f<=$#tortid;$f++){
                $err=0;
                $url="$hhttp/$torlink[$f]";
                $res = $ua->get($url,referer=>$hhttp,);
                print "种子获取成功,开始上传种子/n";
                if ($res->is_success) {
                    $torrent=$res->content;
                    $filename="$n_file"."torrent//temp/.torrent";
                    open (FILE2,">$filename";
                    binmode(FILE2);
                    print FILE2 $torrent;
                    close FILE2;
                    #上传种子
                    w1:{$ua->cookie_jar(HTTP::Cookies->new(file => "$n_file"."data//$user//cookie/.txt",
                    autosave => 0));
                    $ua->timeout(240);
                    $response = $ua->post('http://www3.5hxy.com/bbs/UploadAttachment.asp',
                    Content_Type => 'form-data',
                    Content      => [ file => ["$filename"],
                                    ],
                    referer=>'http://www3.5hxy.com/bbs/',);
                    #获取上传目标种子地址
                    #<a target=_blank href=UpFile/UpAttachment/2007-2/20072731345.torrent>http://www.5hxy.com/UpFile/UpAtt ... 20072731345.torrent</a>
                    if ($response->content=~m{(<a target=_blank href=.*?/.torrent.*?>}m){
                      push(@torxylink,$1.$tortti[$f].'</a>');
                      }else{
                      if ($err<=5){#如果没有错误5次继续尝试上传
                        $err++;
                        goto w1; 
                        }                     
                      }
                    last w1;
                    }
                }
              print "种子上传完毕/n";
              #sleep 3;
              }
              #拆分源帖子
              $zzdaot=0;
              $zzdaow=0;
              for ($s=0;$s<=$#html;$s++){
                #找帖子头部
                if ($zzdaot==0){
                  if ($html[$s]=~m/<table width="95%" border="0" cellspacing="0" cellpadding="0"/){
                    $tou=$s+39; #+5是头部偏移量
                    $zzdaot=1;
                  }
                }elsif ($zzdaow==0){
                  if ($html[$s]=~m/<table width="95%" border="0" cellspacing="0" cellpadding="0"/){
                    $wei=$s-30; #尾部偏移量
                    $zzdaow=1;
                  }
                }
              }
              #如果只找到头没有找到尾那么尾偏移30;
              if ($zzdaot==1 and $zzdaow=0){
                $wei=$tou+30;
              }
              #获取所有图片地址
              print "获取所有图片地址/n";
              @imgh=();
              for($b=$tou;$b<=$wei;$b++){
                    @imgh=split(/ /,$html[$b]);
                    for($j=0;$j<=$#imgh;$j++){
                #<img src="http://img.album.pchome.net/02/71/78/71/efe60b699dcfb8277e0eb309ce4ee1ce.jpg" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window/nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window/nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://img.album.pchome.net/02/71/78/71/efe60b699dcfb8277e0eb309ce4ee1ce.jpg');}" onmousewheel="return imgzoom(this);">
                      if ($imgh[$j]=~m{src="(.+/.jpg)"}){
                        $imgf=$1;
                          if ($imgf=~m/http/){
                            push(@img,"/[img/]$imgf/[/img/]";
                            }else{
                            push(@img,"/[img/]$hhttp/$imgf/[/img/]";
                            }
                          }
                      }
              }
              print "合并数据准备发帖/n";
              $constor='';
              #合并种子地址
              for ($b=0;$b<=$#torxylink;$b++){
                $constor.="<br><br> 本站种子地址torxylink[$b] <br><br>";
                }
              @torxylink=();
              #合并图片地址
              for ($b=0;$b<=$#img;$b++){
                $constor.="<br><br> $img[$b] <br><br>";
                }
              @img=();
              #合并要发送的数据
              $cons=$constor;
              for ($g=$tou;$g<=$wei;$g++){
                $cons.=$html[$g];
                }
              $cons=~s/<i.*?//>//mg;
              $cons=~s/<d.*?>//mg;
              $cons=~s/<//d.*?>//mg;
              $cons.="<br><br>此数据来自$hhttp/$link[$x] <br><br>";
              #####开始发帖子  哎,写了这么多终于可以发帖子了,真不容易
              $ua->cookie_jar(HTTP::Cookies->new(file => "$n_file"."data//$user//cookie/.txt",
                    autosave => 0));
                  $ua->timeout(240);
                  $url='http://www3.5hxy.com/bbs/AddTopic.asp?ForumID='.$postid[$u];
                  #开始发帖子
                  print "开始发帖/n";
                  $response = $ua->post( $url,
                          [ForumID => $postid[$u],
                          Subject => $tti[$x] ,
                          Body => $cons,
                          UpFileId=>1,
                          #content => $cons,
                          #DisableYBBCode => '0'
                          ],
                          referer=>'http://www3.5hxy.com/bbs/', );


            }
                      print "帖子 $tti[$x]$tid[$x] 记录历史完毕 /n";
                      open (FILE,">>$n_file".'data/history.log'); #回过帖子的记录起来
                      print FILE "$tid[$x]/n";
                      close FILE;
        }
      print "==================== $bankuainame[$u] =======================/n";
      $chazhao=0;
      }
  }
print "休眠1200秒 /n";
sleep 1200;
} 
 

Python实现BBS自动登录并发帖 初学Python有了一段时间,寒假里又看了一些Web编程方面的知识,就写了一个实现bbs自动登录和发帖的Python脚本 由于本人学校BBS站首页使用js加载,貌似通过首页登录不大可行,然后就分析表单,发现是通过POST一些data到特定的地址,之后 获取返回的cookie。这样就好办了,废话不多说,上代码。(初学,不够 Pythonic,见谅) #-*-coding:utf-8-*- #l 阅读详情

相关推荐

使用Python爬虫抓取论坛话题内容:从数据抓取到分析的完整流程

爬虫(Web Crawler)是指一种自动化程序,它能够访问互联网中的网页,抓取其中的数据,并根据需求进行存储、分析或者其他操作。爬虫通常会通过发送HTTP请求获取网页内容,并使用各种技术来解析HTML、提取数据。

2201_76125261的博客 1324

发帖子的平台有哪些:探索互联网上的交流新天地

发帖子的平台多种多样,每个平台都有其独特的魅力和价值。选择适合自己的平台,积极参与交流和分享,不仅能够拓宽视野、增长知识,还能结识到更多志同道合的朋友。在这个充满无限可能的网络世界里,让我们携手探索、共同成长吧!

vlogbbs的博客 1万+

python爬虫项目(九十六):爬取宠物论坛的用户发帖数据,分析宠物市场需求

requests:用于发送HTTP请求,获取网页内容。:用于解析HTML内容,提取所需数据。Pandas:用于数据存储与处理。Selenium:用于处理动态网页内容(如需)。通过对宠物论坛用户发帖数据的爬取和分析,我们深入了解了宠物市场的需求。利用爬虫技术和数据分析工具,我们能够获得大量有价值的信息,并通过可视化技术将结果直观呈现。宠物种类需求:用户对特定宠物的讨论频率反映了市场的热门趋势。用户情感倾向:情感分析揭示了用户对宠物的总体态度,为产品和服务的改进提供了方向。用户活跃度分析。

斌擎科技 1083

Python爬取网站文章并自动发布到wordpress博客网站

python爬取likecs网站文章数据,自动发布到自己的WordPress

weixin_66623438的博客 1355

基于Python爬虫的特定领域论坛数据分析:如何抓取并分析行业论坛数据

爬虫(Web Scraping)是通过模拟用户行为,自动化地抓取网站信息。发送HTTP请求:通过请求获取网页内容。解析网页内容:使用HTML解析工具提取网页数据。数据提取:利用选择器提取需要的具体信息。数据存储:将抓取的数据保存到本地数据库或文件中,便于后续分析。通过本文的讲解,我们已经掌握了如何使用Python爬虫抓取特定领域论坛的数据,并对数据进行清洗、分析与可视化。通过文本分析、情感分析和主题建模,我们进一步挖掘了论坛中的热点话题和讨论趋势。

2201_76125261的博客 487

全自动论坛发帖与智能回复工具设计与实现

htmltable {th, td {th {pre {简介:“挂论坛自动发帖回复软件”是一种用于提升论坛互动效率的自动化工具,可实现无人值守下的自动发帖、定时回复及多论坛账号管理。该软件结合API集成、数据抓取与内容生成技术,广泛应用于论坛营销、品牌推广等场景,支持关键词触发、反垃圾机制规避和行为模拟,同时提供效果分析报告。本工具需合规使用,注重账户安全与隐私保护,避免违反社区规则。适用于需要持续在线运营的网络营销和个人IP打造。

weixin_30476025的博客 1443

发帖 网址

视频回复 优酷网 土豆网 酷6 搜狐视频 56视频 播视网 凤凰视频 爱拍视频 PPS网络视频 爱奇艺 迅雷看看 乐视 网易视频 综合社区 新浪网 网易 搜狐 凤凰网 中华网 21CN MSN 天涯网 猫扑网 西祠胡同 凯迪网 今题网 铁血社区 中新网论坛 东方论坛 华声论坛 央广...

weixin_30287169的博客 877

自动化论坛互动软件——适合汽车、房产、娱乐等多种论坛

随着互联网技术的发展,自动发帖回帖软件成为了网络营销和个人品牌建设的有力工具。这类软件主要通过自动化的方式,在论坛等网络平台上快速发布信息和回应,以达到提高信息传播效率和扩大影响力的目的。在现代互联网应用中,网页编程技术扮演着至关重要的角色。无论是创建动态网页,还是实现自动化软件与网页的交互,精通网页编程技术都是不可或缺的技能。“论坛终结者2.8”每次更新都会带来新的功能和改进。例如,最新版本中引入了人工智能技术,使得智能回帖更加人性化,避免了简单的关键词回复导致的帖子质量下降问题。

weixin_35899324的博客 1051

网站上抓取数据并且自动发帖到论坛程序

近期本人闲来没事做了一个程序自动从一些BT网站上抓取数据并且自动发帖到我自己的论坛上,试用了几个月效果比较好,现在公布源代码供perl爱好者参考,欢迎广大perl爱好者一起沟通交流。分几个程序组成readcokie.pl 获取要上传主机的cookie一次获取永久在主机保存fatie.pl         抓取源主机数据并自动发帖到目标主机history.log   保存抓取过的数据user.txt

红杉树(ecitnet)的博客 2305

PHP发帖机实现高效自动化发帖的完整解决方案

htmltable {th, td {th {pre {简介:PHP发帖机是一种基于PHP编程语言开发的自动化网络推广工具,广泛应用于论坛营销与SEO优化。它通过模拟用户登录、智能填充表单、批量发布内容等方式,大幅提升发帖效率。支持验证码识别、代理IP切换、多线程并发和自定义发帖策略,具备较强的适应性和稳定性。本文详细介绍其工作原理、核心功能模块、配套文件解析及合法使用注意事项,帮助用户安全、高效地实现自动化发帖。

weixin_42502089的博客 2512

北邮人论坛热门帖子抓取实践:使用Python Scrapy框架

Scrapy是一个快速、高层次的屏幕抓取和网络抓取框架,用于抓取网站数据并从页面中提取结构化的数据。它是用Python编程语言实现的一个快速、高层次的屏幕抓取和网络爬取框架,用于抓取网站数据并从页面中提取结构化的数据。Scrapy广泛应用于数据挖掘、信息处理或历史数据获取等场景。Scrapy使用Twisted异步网络框架进行网络请求处理,其设计上遵循了生成器的高效率,允许爬虫在处理请求时进行暂停、继续等操作,极大的提升了数据抓取的效率。

weixin_42393362的博客 1103

多站点RSS新闻正文抓取,导入discuz论坛,自动发帖的实现

内容太多了,就转载链接吧! 多站点RSS新闻正文抓取,导入discuz论坛,自动发帖的实现(一) http://blog.youkuaiyun.com/kissliux/article/details/14227057 多站点RSS新闻正文抓取,导入discuz论坛,自动发帖的实现(二) http://blog.youkuaiyun.com/kissliux/article/details/145

u012492220的专栏 1732

2018网站发帖违禁词

2018网站发帖违禁词 自己网站上使用的了 完美,找了好久才找到的

简易python爬虫 - 爬取站长论坛信息

爬取目标: 收集网站帖子里发帖人用户名,发帖人ID;帖子的ID,发帖内容;网站title 提前需要准备的python库 pip3 install requests //用于获得网站的源码 pip3 install bs4 //解析遍历网站标签 pip3 install urllib //解析网站的url 首先导入包 import requestsfrom bs4 impor...

weixin_30600197的博客 920

C#自动发帖程序 完整项目,C#源代码

C#自动发帖程序 完整项目,C#源代码,以魅族论坛为例进行发帖,已测试。账户(mychange)当前帖子数4700+。

Python-Pythonscrapy实现贴吧自动登录签到发帖

Python scrapy实现贴吧自动登录、签到、发帖

论坛全自动化“搬运”,许你一世“虚假繁荣”

一、事情是这样的 群里大牛,弄了一个论坛。 然后想要推广,在群里一天艾特我们800遍~ 闲着也是闲着,想了一下。不就是要有人去论坛提问,有人去论坛回答问题嘛。 这个好办,要知道编程可是万能的。 于是拿起键盘就是干 二、需求分析 简单的和群友们在群里YY了一下思路,大概如下: 批量自动注册账号。要求:有昵称,有头像,需通过邮箱认证(不然不能发贴)。注册时的邮箱可以用临时邮箱。百把来个小号,应该就差不多了。 上别的论坛或平台,爬虫问题和答案。为了显得真实性效果,每个问题可以多采集几条答案,并标记出最优答

秋叶 433

从Palantir到AI时代:Forward Deployed Engineer模式的深度解析

《从Palantir到AI时代:FDE模式的创新与挑战》摘要:Palantir开创的前置部署工程师(FDE)模式正在成为AI创业公司的标配。该模式通过现场工程师深入了解客户需求,填补产品与实际应用间的鸿沟,颠覆了传统SaaS规模化路径。核心优势在于将定制化服务转化为产品发现机制,特别适合高度异质化的AI市场。成功关键在于平衡定制与标准化,通过合同价值增长、产品杠杆效应等独特指标衡量成效。FDE人才需要兼具领域洞察力与快速原型能力。这一模式表明,在AI等新兴领域,深入客户现场可能比单纯追求技术突破更能创造商业

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 4544
上一篇: 网站上抓取数据并且自动发帖到论坛程序
下一篇: HeadFirst采访“工厂方法”和“抽象工厂”
wx红杉树
博客等级 码龄21年 383粉丝 296原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值