SCI期刊信息整理爬虫

1、需求

按ISSN号进行搜索,整理一个特定期刊列表里的所有期刊的年文章、投稿难易和一审周期等信息。使用PHP脚本编写。

网址:http://www.medsci.cn/sci/

(1)按ISSN号搜索


(2)得到结果,以及需要提取的部分


2、分析问题

三个步骤:
(1)使用网络蜘蛛从http://www.medsci.cn/sci/网站抓取信息,模拟输入要搜索的ISSN号,提交表单,获得查询结果的页面。
(2)使用正则表达式搜索结果页面,分析页面代码结构,把需要的信息提取出来。
(3)输出到文件,因为此输出文件无需考虑单元格的排版,为了简便,直接输出为XML的逗号表达式格式。这种格式可以使用Excel直接打开。
选用的类库:
(1)网络蜘蛛 Snoopy
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。
(2) Excel_XML
把array中的数据输出为XML格式的电子表格。
其格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" 

xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="sci">
<Table>
<Row>
<Cell><Data ss:Type="String">ISSN</Data></Cell>
<Cell><Data ss:Type="String">年文章</Data></Cell>
<Cell><Data ss:Type="String">投稿难易</Data></Cell>
<Cell><Data ss:Type="String">一审周期</Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>

3、关键问题

正则表达式匹配测试网站:http://www.rubular.com/
匹配所有汉字:

utf-8编码:

preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str)
gbk编码:

preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)

匹配特定汉字(比如候鸟):

utf-8编码:

<?php
header("Content-Type:text/html; charset=utf-8");
$gb = "可你跟随那南归的候鸟飞的那么远";
$utf8 = iconv('GB2312', 'UTF-8', $gb);

preg_match("/\x{5019}\x{9E1F}/u",$utf8, $match1);
echo "<pre>";
print_r($match1);
echo "</pre>";
?>

gbk编码:

<?php
//header("Content-Type:text/html; charset=utf-8");
$gb = "可你跟随那南归的候鸟飞的那么远";
preg_match("/候鸟/",$gb, $match2);
echo "<pre>";
print_r($match2);
echo "</pre>";
?>


4、使用步骤

(1)输入格式为:
1751-8628,0308-5961,1472-3581,……
小技巧:可以通过拷贝Excel的ISSN号序列放到EditPlus中,Ctrl+H快捷键选择正则表达式复选框,把所有的\n替换为,即可。

(2)运行myspider.php脚本


(3)得到结果表格


5、程序源代码下载

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值