var configs = {
//要爬取的域名
domains: ["leiphone.com"],
//爬虫的入口URL
scanUrls: ["http://www.leiphone.com/search?s=vr&site=article"],
//内容页url正则
/*
解读下面正则:
http://www.leiphone.com/news/ (\d+表示任意位数的数字) /(.+表示任意字符多次或1次).html
\d 匹配一个字数字符,/\d/ = /[0-9]/
+ 匹配前面元字符1次或多次
. 可以替代任何字符
例如:https://www.leiphone.com/news/201701/ri7dDB7Fq0mMj1qh.html
*/
contentUrlRegexes: [
/http:\/\/www\.leiphone\.com\/news\/\d+\/.+\.html/
],
//列表页url正则 可留空
/*
解读下面正则:
http://www.leiphone.com/search?s=vr&site=article(&page=\d+)? 表示页数可有不可有
例如:https://www.leiphone.com/search?s=vr&site=article&page=2
*/
helperUrlRegexes: [
/http:\/\/www\.leiphone\.com\/search\?s=vr&site=article(&page=\d+)?/
],
fields: [
{
// 抽取内容页的文章标题
// name自己写
name: "article_title",
// selector解读 表示该name的值是页面上的h1标签上的class="headTit"的页签的值
/*
<h1 class="headTit">
4K之后,8K头显海外众筹表现不俗,小派科技为什么要死磕分辨率?
</h1>
*/
selector: "//h1[contains(@class,'headTit')]",
required: true
},
{
// 抽取内容页的文章内容
/*
*/
name: "article_content",
selector: "//div[contains(@class,'lph-article-comView')]",
required: true
},
{
// 抽取内容页的文章发布日期
name: "article_publish_time",
selector: "//td[contains(@class,'time')]",
required: true
},
{
// 抽取内容页的文章作者
/*
如果出现这种情况 就是定位的里面还有标签 那么就如下写
<td class="aut">
本文作者:<a href="https://www.leiphone.com/author/tianmiao" target="_blank" rel="nofollow">田苗</a>
</td>
*/
name: "article_author",
selector: "//td[contains(@class,'aut')]/a",
required: true
}
]
};
// 在"afterExtractField回调函数"中将爬取到的时间转换为秒级时间戳
/*
fieldName: 表示字段名称
data: 表示字段值
page: 表示当前正在爬取的网页对象
site: 表示当前正在爬取的目标网站对象
configs.afterExtractField = function(fieldName, data, page, site) {
if (fieldName == "article_publish_time") {
var timestamp = Date.parse(data);
return isNaN(timestamp) ? 0 : parseInt(timestamp/1000);
}
return data;
};
// 使用以上配置创建一个采集爬虫
var crawler = new Crawler(configs);
// 启动该采集爬虫
crawler.start();
爬虫技术(01)神箭手爬虫初学案例解读
最新推荐文章于 2022-01-20 04:03:04 发布