什么?php也能做爬虫?

php爬虫代码(爬去我的OJ题库为例)

<?php
for ($i=1000;;$i++){
$url = "http://localhost/JudgeOnline/problem.php?pid=$i";  //这儿填OJ地址
$info=file_get_contents($url);
preg_match(‘|<title>(.*?)<\/title>|i‘,$info,$m); //获取标题
$title[$i][1]=$m[1];
if (!$m[1]) break; //如果没有标题,说明这题不存在,可以跳过
preg_match(‘|<h1 class="text-center">(.*?)<\/h1>|i‘,$info,$m); //获取题目标题信息
$title[$i][1]=$m[1];
}
echo "A total of ";
echo $pnum=$i-1000; //题目总数
echo " problems<br>";
?>
<?php
for ($i=1000;$i<=(999+$pnum);$i++){
$fh= file_get_contents("http://localhost/JudgeOnline/problem.php?pid=$i");
//echo $fh;
echo "Get P$i ";
echo ‘"‘;
echo $title[$i][1];
echo ‘"<br>‘;
unlink("$i.html");
$myfile = fopen("$i.html", "w"); //存放文件至 题目编号.html
fwrite($myfile, $fh);
fclose($myfile);
}
?>

网页端运行结果:

A total of 21 problems
Get P1000 "1000 : A+B问题"
Get P1001 "1001 : 求累加和"
Get P1002 "1002 : n的阶乘"
Get P1003 "1003 : 阶乘和"
Get P1004 "1004 : 第k小整数"
Get P1005 "1005 : 求a/b的高精度值"
Get P1006 "1006 : 麦森数mason"
Get P1007 "1007 : 旅行"
Get P1008 "1008 : 团伙(team)"
Get P1009 "1009 : 打击犯罪"
Get P1010 "1010 : 家谱(gen)"
Get P1011 "1011 : 搭配购买"
Get P1012 "1012 : 合并果子"
Get P1013 "1013 : 编辑距离"
Get P1014 "1014 : 奖学金"
Get P1015 "1015 : 过河卒"
Get P1016 "1016 : Hello World"
Get P1017 "1017 : 计算器大法好……"
Get P1018 "1018 : 测试题目"
Get P1019 "1019 : 度熊的全1串"
Get P1020 "1020 : 快速排序"

截取1000.html结果:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
<!-- SEO -->
<meta name="description" content="MasterOJ is an online judge system for ACM/ICPC">
<meta name="keywords" content="OJ,Online Judge,MasterOJ,ACM,ICPC">
<!-- Icons -->
<link rel="icon" href="./sitefiles/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta name="msapplication-TileColor" content="#FEF2E6">
<meta name="msapplication-TileImage" content="./sitefiles/favicon.png">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="./sitefiles/css/bootstrap.min.css">
<link rel="stylesheet" href="./sitefiles/css/prettify.css" type="text/css">
<link rel="stylesheet" href="./sitefiles/css/font-awesome.min.css" type="text/css">
<link rel="stylesheet" href="./sitefiles/css/nprogress.css">

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
  <script src="./sitefiles/js/html5shiv.js"></script>
  <script src="./sitefiles/js/respond.min.js"></script>
<![endif]-->

<!--[if lt IE 7]>
  <link rel="stylesheet" href="./sitefiles/css/font-awesome-ie7.css" type="text/css">
<![endif]-->

<link rel="stylesheet" href="./sitefiles/css/bearkidframe.css" type="text/css">

<!-- javascripts -->
<script src="./sitefiles/js/jquery.min.js"></script>
<script src="./sitefiles/js/bootstrap.min.js"></script>
<script src="./sitefiles/js/prettify.js"></script>
<script src="./sitefiles/js/nprogress.js"></script>
		<title>题目描述 - MasterOJ</title>
	</head>
	<body>
		<nav class="navbar navbar-default">
	<div class="container">
		<!-- Brand and toggle get grouped for better mobile display -->
		<div class="navbar-header">
			<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
				<span class="sr-only">Toggle navigation</span>
				<span class="icon-bar"></span>
				<span class="icon-bar"></span>
				<span class="icon-bar"></span>
			</button>
			<a class="navbar-brand" href="index.html">MasterOJ</a>
		</div>

		<!-- Collect the nav links, forms, and other content for toggling -->
		<div id="navbar" class="collapse navbar-collapse">
			<ul class="nav navbar-nav">
			<li><a href="hindex.php">首页</a></li>
				<li><a href="problemset.php">题库</a></li>
				<li><a href="status.php">状态</a></li>
				<li><a href="ranklist.php">排名</a></li>
				<li><a href="contestlist.php">比赛</a></li>
				<!--<li><a href="document.php">Document</a></li>-->

								<li><a href="discuss.php">论坛</a></li>
				                                <!--<li><a href="#" onclick="javascript:alert(‘该功能未开发!‘)">资源下载</a></li>-->
                                <li><a href="./download/">资源下载</a></li>
                                <li><a href="game/">Games</a></li>

			</ul>
						<ul class="nav navbar-nav navbar-right">
				<li><a href="./registerpage.php"><i class="fa fa-user-plus"></i> 注册</a></li>
				<li><a href="./loginpage.php"><i class="fa fa-sign-in"></i> 登陆</a></li>
			</ul>
					</div><!-- /.navbar-collapse -->
	</div><!-- /.container-fluid -->
</nav>
		<div class="container">
			<h1 class="text-center">1000 : A+B问题</h1>
			<p class="text-center">
				时间限制:<span class="label label-primary">1 Sec</span>
				内存限制:<span class="label label-primary">256 MiB</span><br/>
				提交:<span class="label label-info">8</span>
				答案正确:<span class="label label-success">5</span>
			</p>
			<p class="text-center">
				<a id="oj-p-submit" class="btn btn-primary" href="./problemsubmit.php?pid=1000" role="button">提交</a>
				<a class="btn btn-primary" href="./problemstatistics.php?pid=1000" role="button">状态</a>
								<a class="btn btn-primary" href="./discuss.php?pid=1000" role="button">论坛</a>				<!--<a class="btn btn-primary" href="" role="button">题解</a>-->
			</p>

			<h3><a data-toggle="collapse" data-target="#problemDesc">题目描述</a></h3>
			<div class="collapse in" id="problemDesc" aria-expanded="true">
				<pre><p>计算A+B的值(A,B,A+B<=2147483647)</p></pre>
			</div>

			<h3><a data-toggle="collapse" data-target="#problemInput">输入</a></h3>
			<div class="collapse in" id="problemInput" aria-expanded="true">
				<pre><p>两个整数A和B<br></p></pre>
			</div>

			<h3><a data-toggle="collapse" data-target="#problemOut">输出</a></h3>
			<div class="collapse in" id="problemOut" aria-expanded="true">
				<pre><p>输出A+B</p></pre>
			</div>

			<h3 id="bl-p-datain"><a data-toggle="collapse" data-target="#dataIn">样例输入</a></h3>
			<div class="collapse in" id="dataIn" aria-expanded="true">
				<div class="zero-clipboard">
					<span id="bl-p-copy" class="btn-clipboard" onclick="copyToClipboard(document.getElementById(‘dataInContent‘).innerHTML);">复制</span>
				</div>
				<pre id="dataInContent">1 2</pre>
			</div>

			<h3><a data-toggle="collapse" data-target="#dataOut">样例输出</a></h3>
			<div class="collapse in" id="dataOut" aria-expanded="true">
				<div class="zero-clipboard">
					<span class="btn-clipboard" onclick="copyToClipboard(document.getElementById(‘dataOutContent‘).innerHTML);">复制</span>
				</div>
				<pre id="dataOutContent">3</pre>
			</div>

			<h3><a data-toggle="collapse" data-target="#problemHint">提示</a></h3>
			<div class="collapse" id="problemHint" aria-expanded="true">
				<pre></pre>
			</div>
			<!--
			<h3><a data-toggle="collapse" data-target="#problemTag">标签</a></h3>
			<div class="collapse" id="problemTag" aria-expanded="true">
				<div class="well">
					<span class="label label-default"><span>
				</div>
			</div>
			-->
			<h3><a data-toggle="collapse" data-target="#problemSrc">标签</a></h3>
			<div class="collapse" id="problemSrc" aria-expanded="true">
				<pre>初级</pre>
			</div>

		</div><!--main wrapper end-->
		<footer class="footer">
	<div class="container">
		<p style="float: left;" align="left">
			<span id="clock">服务器时间: Loading...</span><br/>
			<a class="bl-footer-link" href="document.php">FAQ</a> | <a class="bl-footer-link" href="document.php?f=rule">EULA</a><!--|
<i class="fa fa-code"></i><i class="fa fa-download"></i><i class="fa fa-github"></i>
<i class="fa fa-money"></i><i class="fa fa-book"></i><i class="fa fa-lock"></i><i class="fa fa-qq"></i><i class="fa fa-weixin"></i><i class="fa fa-facebook"></i><i class="fa fa-check"></i><i class="fa fa-circle"></i><i class="fa fa-circle-o"></i><i class="fa fa-clock-o"></i><i class="fa fa-user"></i><i class="fa fa-inbox"></i><i class="fa fa-tags"></i><i class="fa fa-cogs"></i><i class="fa fa-sign-out"></i><i class="fa fa-history"></i><i class="fa fa-edit"></i><i class="fa fa-search"></i><i class="fa fa-laptop"></i><i class="fa fa-paper-plane"></i><i class="fa fa-paper-plane-o"></i><i class="fa fa-flag"></i><i class="fa fa-heart"></i></a>-->
		<p style="float: right; margin-right: 15px;" class="hidden-xs" align="right">
			Copyright ? 1999~2017 <a class=‘bl-footer-link‘ href=‘hindex.php‘>MasterOJ</a>.<br/>
			All Rights reserved		</p>
	</div>
</footer>
<script>
	var delta=new Date("2018/02/12 22:56:52").getTime()-new Date().getTime();
	function clock() {
		var h,m,s,finalText,week,year,mon,day;
		var realTime = new Date(new Date().getTime() + delta);
		year = realTime.getYear() + 1900;
		if (year > 3000) year-=1900;
		mon = realTime.getMonth()+1;
		day = realTime.getDate();
		week = realTime.getDay();
		h=realTime.getHours();
		m=realTime.getMinutes();
		s=realTime.getSeconds();
		finalText="服务器时间: "+year+"/"+mon+"/"+day+" "+(h>=10?h:"0"+h)+":"+(m>=10?m:"0"+m)+":"+(s>=10?s:"0"+s);
		document.getElementById(‘clock‘).innerHTML=finalText;
		setTimeout("clock()", 1000);
	}
	clock();
</script>
	<script type="text/javascript">
function copyToClipboard(s){
    //alert(s);
    if(window.clipboardData){
       window.clipboardData.setData("Text",s);
       alert("已经复制到剪切板!");
    }else if(navigator.userAgent.indexOf("Opera") != -1) {
       window.location = s;
    }else if(window.netscape) {
        try {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        } catch (e) {
            alert("被浏览器拒绝!\n请在浏览器地址栏输入‘about:config‘并回车\n然后将‘signed.applets.codebase_principal_support‘设置为‘true‘");
        }
        var clip = Components.classes[‘@mozilla.org/widget/clipboard;1‘].createInstance(Components.interfaces.nsIClipboard);
        if (!clip)
            return;
        var trans = Components.classes[‘@mozilla.org/widget/transferable;1‘].createInstance(Components.interfaces.nsITransferable);
        if (!trans)
            return;
        trans.addDataFlavor(‘text/unicode‘);
        var str = new Object();
        var len = new Object();
        var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
        var copytext = s;
        str.data = copytext;
        trans.setTransferData("text/unicode",str,copytext.length*2);
        var clipid = Components.interfaces.nsIClipboard;
        if (!clip)
            return false;
        clip.setData(trans,null,clipid.kGlobalClipboard);
        alert("已经复制到剪切板!");
    }
}

$(window).load(function(){
    prettyPrint();
})
	</script>

	</body>
</html>

所以php也是能搞爬虫的

原文地址:https://www.cnblogs.com/yemaster/p/8445800.html

时间: 2024-10-05 10:23:10

什么?php也能做爬虫?的相关文章

手把手教你做爬虫---基于NodeJs

前言: 趁着北京今儿天气格外的蓝,我觉得我得干点什么,于是乎,卷起袖子,整理一下最近做爬虫的那些事儿. 目标:爬取北京大学软件与微电子学院的所有新闻,并将内容及图片存储到本地. 设计思路:经过对北京大学软件与微电子学院的新闻网址http://www.ss.pku.edu.cn/index.php/newscenter/news/内容及网页格式的分析,我发现了这样一个规律:在每篇文章中,都会有下一篇文章url的链接.所以,我的做法是:给定一个初始(最新的)网页的url,如http://www.ss

用Nodejs做爬虫

欢迎访文我的博客YangChen's Blog 引言 提起爬虫,最容易想到的就是python,因为python给人的感觉就是啥都能干,但是之前用python做爬虫的过程还是很不爽的,主要问题来自这么几个方面:第一个是对爬来的网页dom操作上,第二个就是编码的处理,第三就是多线程,所以用python做爬虫其实并不是很爽,有没有更爽的方式呢?当然有那就是node.js! Nodejs做爬虫的优劣 首先说一下node做爬虫的优势 第一个就是他的驱动语言是JavaScript.JavaScript在no

网络爬虫作业代码代写代实现、代做爬虫程序

网络爬虫作业代码代写代实现.代做爬虫程序任务二.网络爬虫实现 一.任务描述编写大学排名爬虫程序,从"最好大学网"获取"软科中国最好大学排名"2016.2017.2018年的国内大学排名数据,并将它们输出出来.2016年中国最好大学排名网址目的1.学习运用requests库编写基本URL访问过程2.学习运用beautifulsoup4库解析和处理HTML3.掌握编写网络爬虫的基本方法二.任务分析(必须有,主要分析任务需求,完成任务的思路与方法,采用的技术等,如爬虫的任

你学Python多久了?为什么你还不会做爬虫?

学习是个很有意思的事,有的人随便学学就能很快学会,而有的人明明很努力却什么都没学会,这是为甚呢?有的人学了3个月,甚至更久却连一个项目或者一个爬虫都不会做,这究其原因是和你的学习效率有关.对于大家所问的Python怎么学?Python小白怎么入门?我就来带大家看一下一位Python大牛对学习Python的经验总结,希望对你有所助益 一.学习的三大原则 1.简单入手原则:从简单的开始. 任何事情从简单的开始,容易入门,容易产生"兴趣",然后是有成就感,有自信才容易把学习进行下去.所以Py

用kettle做爬虫(一)get请求爬取日期

背景 接到一个任务,是爬取广东省采购网2019年全年的采购公告.合同信息.结果公告等信息.通过python代码的编写已经完成了这个任务.但由于采购网的服务器不是太稳定等因素,因此,相当一部分的数据行没有爬取到“公布日期”. 幸好,我的数据行里面已经存有每个数据的网址来历,只要直接get,就能获取该网页了.而我想起kettle里面也可以做简易的爬虫,因此,我利用kettle做了一个爬虫,将数据库内,公布日期为“0000-00-00”的错误数据,重新爬取入库. 附:广东省采购网网址:http://w

可做爬虫的jsoup常用方法,附异步请求实现

jsoup是一款java html 解析器,可以解析url地址,html文本内容,可以通过dom,css以及类似javascript和jquery的操作方法来取出和操作数据 jsoup主要功能:  1.从url,文件或者字符串中解析html     2.使用dom或css或JavaScript或类似jquery的选择器超照取出数据     3.可操作html元素,属性,文本   jsoup解析:   jsoup提供一系列的静态解析方法生成document对象 static Document pa

用python做爬虫的例子

主要就是用了两个库,urllib和BeautifulSoup. 作用是从HTML中解析出解梦的查询词和具体的解释. 1 # -*- coding: utf-8 -*- 2 import urllib, urllib2 3 import time, random 4 from BeautifulSoup import BeautifulSoup 5 6 def fetchURL(str_url): 7 8 user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW

Python爬虫工作好做吗?爬虫工作发展前景如何呢?

为什么网上Python爬虫教程这么多,但是做爬虫的这么少呢?爬虫发展又该是如何呢? 我们来看看一篇深入前线的小哥的分析. 关于爬虫的技术要求: 爬虫掌握熟练的话,包括简单的mysql语句.html和css简单的知识以及最厉害的scrapy爬虫框架,基本上就可以去尝试海投一下爬虫岗位.创一个小群,供大家学习交流聊天如果有对学python方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学python能够持之以恒python爱好群,如果你想要学好python最好

转载:用python爬虫抓站的一些技巧总结

原文链接:http://www.pythonclub.org/python-network-application/observer-spider 原文的名称虽然用了<用python爬虫抓站的一些技巧总结>但是,这些技巧不仅仅只有使用python的开发可以借鉴,我看到这篇文章的时候也在回忆自己做爬虫的过程中也用了这些方法,只是当时没有系统的总结而已,谨以此文为鉴,为以前的爬虫程序做一个总结. 转载原文如下: 学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,