首页 > 编程技术 > php

PHP html dom php+正则 采集文章代码

发布时间:2016-11-25 16:00


<?php
//包含PHP Simple html Dom 类库文件
include_once('./simplehtmldom/simple_html_dom.php');
//采集html
function getwebcontent($url){
$ch = curl_init();
$timeout = 10;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
$contents = trim(curl_exec($ch));
curl_close($ch);
return $contents;
}

//获得标题和url
$string =
getwebcontent('http://www.babytree.com/learn/zhunbeihuaiyun/jijibeiyun/2');
//正则匹配<li>获取标题和地址
preg_match_all ("/<li><a href="/learn/article/(.*)">(.*)</a>/",
$string, $out, PREG_SET_ORDER);
foreach($out as $key => $value){
$article['title'][] = $out[$key][2];
$article['link'][] = "http://www.babytree.com/learn/article/".$out[$key][1];
}
//根据url获取文章内容
foreach($article['link'] as $key=>$value){
$html = file_get_html($value);
$div = $html->find('div[id=pagenum_0]');
$article[content][] = $div[0]->innertext;
}
//标题转码---真正用的时候不用这步--因为咱本来就要用utf8的
//不转码还真不能保存成文件
foreach($article[title] as $key=>$value){
$article[title][$key] = iconv('utf-8', 'gbk', $value);//转码
}
//存入文件
$num = count($article['title']);
for($i=0; $i<$num; $i++){
file_put_contents("{$article[title][$i]}.txt", $article['content'][$i]);
}
/*本来想12点之前发的。。但小看一下都3点半了。。。 就算昨天的吧
本来获取文章内容时用正则是最好的,速度也是最快的,
奈何正则是好,但正则表达式是真难!于是乎小查了一下,
网上也有很多人也在用PHP Simple Dom 虽然效率慢了点,但效果还是不错的
从包含类库文件到写入txt文件 大概是7/8就秒 还有带于进一步优化,特别是那获取文章内容时的正则,那个太恶心了
大家可以小研究一下*/
?>

php 国家代码查询函数
<?php
function transCountryCode($code) {
    $index=array('AA'=>'阿鲁巴',
    'AD'=>'安道尔',
    'AE'=>'阿联酋',
    'AF'=>'阿富汗',
    'AG'=>'安提瓜和巴布达',
    'AL'=>'阿尔巴尼亚',
    'AM'=>'亚美尼亚',
    'AN'=>'荷属安德列斯',
    'AO'=>'安哥拉',
    'AQ'=>'南极洲',
    'AR'=>'阿根廷',
    'AS'=>'东萨摩亚',
    'AT'=>'奥地利',
    'AU'=>'澳大利亚',
    'AZ'=>'阿塞拜疆',
    'Av'=>'安圭拉岛',
    'BA'=>'波黑',
    'BB'=>'巴巴多斯',
    'BD'=>'孟加拉',
    'BE'=>'比利时',
    'BF'=>'巴哈马',
    'BF'=>'布基纳法索',
    'BG'=>'保加利亚',
    'BH'=>'巴林',
    'BI'=>'布隆迪',
    'BJ'=>'贝宁',
    'BM'=>'百慕大',
    'BN'=>'文莱布鲁萨兰',
    'BO'=>'玻利维亚',
    'BR'=>'巴西',
    'BS'=>'巴哈马',
    'BT'=>'不丹',
    'BV'=>'布韦岛',
    'BW'=>'博茨瓦纳',
    'BY'=>'白俄罗斯',
    'BZ'=>'伯里兹',
    'CA'=>'加拿大',
    'CB'=>'柬埔寨',
    'CC'=>'可可斯群岛',
    'CD'=>'刚果',
    'CF'=>'中非',
    'CG'=>'刚果',
    'CH'=>'瑞士',
    'CI'=>'象牙海岸',
    'CK'=>'库克群岛',
    'CL'=>'智利',
    'CM'=>'喀麦隆',
    'CN'=>'中国',
    'CO'=>'哥伦比亚',
    'CR'=>'哥斯达黎加',
    'CS'=>'捷克斯洛伐克',
    'CU'=>'古巴',
    'CV'=>'佛得角',
    'CX'=>'圣诞岛',
    'CY'=>'塞普路斯',
    'CZ'=>'捷克',
    'DE'=>'德国',
    'DJ'=>'吉布提',
    'DK'=>'丹麦',
    'DM'=>'多米尼加共和国',
    'DO'=>'多米尼加联邦',
    'DZ'=>'阿尔及利亚',
    'EC'=>'厄瓜多尔',
    'EE'=>'爱沙尼亚',
    'EG'=>'埃及',
    'EH'=>'西撒哈拉',
    'ER'=>'厄立特里亚',
    'ES'=>'西班牙',
    'ET'=>'埃塞俄比亚',
    'FI'=>'芬兰',
    'FJ'=>'斐济',
    'FK'=>'福兰克群岛',
    'FM'=>'米克罗尼西亚',
    'FO'=>'法罗群岛',
    'FR'=>'法国',
    'FX'=>'法国-主教区',
    'GA'=>'加蓬',
    'GB'=>'英国',
    'GD'=>'格林纳达',
    'GE'=>'格鲁吉亚',
    'GF'=>'法属圭亚那',
    'GH'=>'加纳',
    'GI'=>'直布罗陀',
    'GL'=>'格陵兰岛',
    'GM'=>'冈比亚',
    'GN'=>'几内亚',
    'GP'=>'法属德洛普群岛',
    'GQ'=>'赤道几内亚',
    'GR'=>'希腊',
    'GS'=>'S. Georgia and S. Sandwich Isls.',
    'GT'=>'危地马拉',
    'GU'=>'关岛',
    'GW'=>'几内亚比绍',
    'GY'=>'圭亚那',
    'HK'=>'中国香港特区',
    'HM'=>'赫德和麦克唐纳群岛',
    'HN'=>'洪都拉斯',
    'HR'=>'克罗地亚',
    'HT'=>'海地',
    'HU'=>'匈牙利',
    'ID'=>'印度尼西亚',
    'IE'=>'爱尔兰',
    'IL'=>'以色列',
    'IN'=>'印度',
    'IO'=>'英属印度洋领地',
    'IQ'=>'伊拉克',
    'IR'=>'伊朗',
    'IS'=>'冰岛',
    'IT'=>'意大利',
    'JM'=>'牙买加',
    'JO'=>'约旦',
    'JP'=>'日本',
    'KE'=>'肯尼亚',
    'KG'=>'吉尔吉斯斯坦',
    'KH'=>'柬埔寨',
    'KI'=>'基里巴斯',
    'KM'=>'科摩罗',
    'KN'=>'圣基茨和尼维斯',
    'KP'=>'韩国',
    'KR'=>'朝鲜',
    'KW'=>'科威特',
    'KY'=>'开曼群岛',
    'KZ'=>'哈萨克斯坦',
    'LA'=>'老挝',
    'LB'=>'黎巴嫩',
    'LC'=>'圣卢西亚',
    'LI'=>'列支顿士登',
    'LK'=>'斯里兰卡',
    'LR'=>'利比里亚',
    'LS'=>'莱索托',
    'LT'=>'立陶宛',
    'LU'=>'卢森堡',
    'LV'=>'拉托维亚',
    'LY'=>'利比亚',
    'MA'=>'摩洛哥',
    'MC'=>'摩纳哥',
    'MD'=>'摩尔多瓦',
    'MG'=>'马达加斯加',
    'MH'=>'马绍尔群岛',
    'MK'=>'马其顿',
    'ML'=>'马里',
    'MM'=>'缅甸',
    'MN'=>'蒙古',
    'MO'=>'中国澳门特区',
    'MP'=>'北马里亚纳群岛',
    'MQ'=>'法属马提尼克群岛',
    'MR'=>'毛里塔尼亚',
    'MS'=>'蒙塞拉特岛',
    'MT'=>'马耳他',
    'MU'=>'毛里求斯',
    'MV'=>'马尔代夫',
    'MW'=>'马拉维',
    'MX'=>'墨西哥',
    'MY'=>'马来西亚',
    'MZ'=>'莫桑比克',
    'NA'=>'纳米比亚',
    'NC'=>'新卡里多尼亚',
    'NE'=>'尼日尔',
    'NF'=>'诺福克岛',
    'NG'=>'尼日利亚',
    'NI'=>'尼加拉瓜',
    'NL'=>'荷兰',
    'NO'=>'挪威',
    'NP'=>'尼泊尔',
    'NR'=>'瑙鲁',
    'NT'=>'中立区(沙特-伊拉克间)',
    'NU'=>'纽爱',
    'NZ'=>'新西兰',
    'OM'=>'阿曼',
    'PA'=>'巴拿马',
    'PE'=>'秘鲁',
    'PF'=>'法属玻里尼西亚',
    'PG'=>'巴布亚新几内亚',
    'PH'=>'菲律宾',
    'PK'=>'巴基斯坦',
    'PL'=>'波兰',
    'PM'=>'圣皮艾尔和密克隆群岛',
    'PN'=>'皮特克恩岛',
    'PR'=>'波多黎各',
    'PT'=>'葡萄牙',
    'PW'=>'帕劳',
    'PY'=>'巴拉圭',
    'QA'=>'卡塔尔',
    'RE'=>'法属尼留旺岛',
    'RO'=>'罗马尼亚',
    'RU'=>'俄罗斯',
    'RW'=>'卢旺达',
    'SA'=>'沙特阿拉伯',
    'SC'=>'塞舌尔',
    'SD'=>'苏丹',
    'SE'=>'瑞典',
    'SG'=>'新加坡',
    'SH'=>'圣赫勒拿',
    'SI'=>'斯罗文尼亚',
    'SJ'=>'斯瓦尔巴特和扬马延岛',
    'SK'=>'斯洛伐克',
    'SL'=>'塞拉利昂',
    'SM'=>'圣马力诺',
    'SN'=>'塞内加尔',
    'SO'=>'索马里',
    'SR'=>'苏里南',
    'ST'=>'圣多美和普林西比',
    'SU'=>'前苏联',
    'SV'=>'萨尔瓦多',
    'SY'=>'叙利亚',
    'SZ'=>'斯威士兰',
    'Sb'=>'所罗门群岛',
    'TC'=>'特克斯和凯科斯群岛',
    'TD'=>'乍得',
    'TF'=>'法国南部领地',
    'TG'=>'多哥',
    'TH'=>'泰国',
    'TJ'=>'塔吉克斯坦',
    'TK'=>'托克劳群岛',
    'TM'=>'土库曼斯坦',
    'TN'=>'突尼斯',
    'TO'=>'汤加',
    'TP'=>'东帝汶',
    'TR'=>'土尔其',
    'TT'=>'特立尼达和多巴哥',
    'TV'=>'图瓦卢',
    'TW'=>'中国台湾省',
    'TZ'=>'坦桑尼亚',
    'UA'=>'乌克兰',
    'UG'=>'乌干达',
    'UK'=>'英国',
    'UM'=>'美国海外领地',
    'US'=>'美国',
    'UY'=>'乌拉圭',
    'UZ'=>'乌兹别克斯坦',
    'VA'=>'梵蒂岗',
    'VC'=>'圣文森特和格陵纳丁斯',
    'VE'=>'委内瑞拉',
    'VG'=>'英属维京群岛',
    'VI'=>'美属维京群岛',
    'VN'=>'越南',
    'VU'=>'瓦努阿鲁',
    'WF'=>'瓦里斯和福图纳群岛',
    'WS'=>'西萨摩亚',
    'YE'=>'也门',
    'YT'=>'马约特岛',
    'YU'=>'南斯拉夫',
    'ZA'=>'南非',
    'ZM'=>'赞比亚',
    'ZR'=>'扎伊尔',
    'ZW'=>'津巴布韦');
    $code=strtoupper($code);
    $name=$index[$code];
    if (empty($name)) {
        return null;
    }
    return $name;
}
?>


#!/usr/bin/env php
<?php
/**
* Compact PHP code.
*
* Strip comments, combine entire library into one file.
*/
if ($argc < 3) {
print "Strip unecessary data from PHP source files.nntUsage: php compactor.php DESTINATION.php SOURCE.php";
exit;
}

$source = $argv[2];
$target = $argv[1];
print "Compacting $source into $target.n";
include $source;
$files = get_included_files();
print_r($files);
$out = fopen($target, 'w');
fwrite($out, '<?php' . PHP_EOL);
fwrite($out, '// QueryPath. Copyright (c) 2009, Matt Butcher.' . PHP_EOL);
fwrite($out, '// This software is released under the LGPL, v. 2.1 or an MIT-style license.' . PHP_EOL);
fwrite($out ,'// http://opensource.org/licenses/lgpl-2.1.php');
fwrite($out, '// http://querypath.org.' . PHP_EOL);
foreach ($files as $f) {
if ($f !== __FILE__) {
$contents = file_get_contents($f);
foreach (token_get_all($contents) as $token) {
if (is_string($token)) {
fwrite($out, $token);
}
else {
switch ($token[0]) {
case T_REQUIRE:
case T_REQUIRE_ONCE:
case T_INCLUDE_ONCE:
// We leave T_INCLUDE since it is rarely used to include
// libraries and often used to include HTML/template files.
case T_COMMENT:
case T_DOC_COMMENT:
case T_OPEN_TAG:
case T_CLOSE_TAG:
break;
case T_WHITESPACE:
fwrite($out, ' ');
break;
default:
fwrite($out, $token[1]);
}
}
}
}
}
fclose($out);
?>

1,最简单的方法就是不要用php5.1以上的版本
2,如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的
上面加上 date_default_timezone_set (XXX);
3,一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号
= 后面加XXX,重启http服务(如apache2或iis等)即可

关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
老外好像把北京漏调了
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中华人民共和国啊-_-
以上都是我从php官方说明档里整理出来的GMT-8下面的地区,可能会有遗漏

网站不良信息在线检查系统
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>网站不良信息在线检查系统</title>
</head>

<body>
<div align="center">
  <FORM method='get' action='check.php?site=".$_GET[site]."' target="_self">
<input id='site' name='site' value="请输入网址">
<INPUT type=submit value="不加www">
</FORM>
</div>
<?
error_reporting(0);
if(!$_GET[site])
{
 echo "<div align="center">";
 echo "<a href='http://www.111cn.net' target='_blank'>中国WEB第一站</a>   <script language="javascript" type="text/javascript"" width=100% src="http://js.users.51.la/296026.js"></script>
<noscript><a href="" target="_blank"><img alt="&#x6211;&#x8981;&#x5566;&#x514D;&#x8D39;&#x7EDF;&#x8BA1;"" width=100% src="http://img.users.51.la/296026.asp" style="border:none" /></a></noscript>";
 echo "</div>";
 exit;
}
echo "<script" width=100% src='check.php?site=".$_GET[site]."'></script>";
echo "检测完毕    <a href='http://' target='_blank'></a> <script language="javascript" type="text/javascript"" width=100% src="http://js.users.51.la/296026.js"></script>
<noscript><a href="" target="_blank"><img alt="&#x6211;&#x8981;&#x5566;&#x514D;&#x8D39;&#x7EDF;&#x8BA1;"" width=100% src="http://img.users.51.la/296026.asp" style="border:none" /></a></noscript>";
?>
</body>
</html>

check.php文件

<?php
error_reporting(0);
$site=$_GET[site]; //获取网址
if (!$site){echo "请填写完整url"; exit;}
if((!$censorFile=fopen("CensorWords.txt","r")))
{
 print("找不到敏感词汇样本文件");
 exit;
}
echo "<center>";
echo "<img" width=100% src="images/17.jpg" alt="构建和谐社会,人人有责!"><br><br>";
echo "<div align="left" style="width:468px">";
$censorFile=file("CensorWords.txt");
foreach ($censorFile as $censorWords)
{
 $censorWords=rtrim($censorWords,"nr");
 $handle = @fopen("http://www.baidu.com/s?q1=site%3A".$site."&q2=".$censorWords,"r");
 if ($handle) {
  while (!feof($handle))
  {
   $buffer = fgets($handle, 12000);
   //print ($buffer);//输出Buffer,调试用
   $listWords.=cut($buffer,"百度一下,找到相关网页","篇");
  }
  fclose($handle);
 }


 if ($listWords){
  echo "存在非法内容:".$listWords."条记录<a href='http://www.baidu.com/s?tn=macdown&ct=0&ie=gb2312&bs=site%3A".$site."&sr=1&z=&cl=3&f=8&wd=".$censorWords."' target=_blank>$censorWords</a><br>";
  $listWords="";}//清空关键词
}
echo "<br><br><strong>检测完毕,请及时删除不良信息!</strong><br>";

function cut($file,$from,$end){
 $message=explode($from,$file);
 $message=explode($end,$message[1]);
 return        $message[0];
}
?>

标签:[!--infotagslink--]

您可能感兴趣的文章: