็ถฒ้ ็ฌ่ฒๆฏๆปฟๅธธ้ๅฐ็่ชฒ้ก,ไปๅคฉ็ทด็ฟไธไธ็จ้ไธ็จฎ่ช่จๅฏซ็ฌ่ฒ
PHP
sunra/php-simple-html-dom-parser
crawler.php
<?php
include 'vendor/autoload.php';
use Sunra\PhpSimple\HtmlDomParser;
$url = 'https://www.ptt.cc/bbs/NBA/index.html';
$html = HtmlDomParser::file_get_html($url);
$titles = $html->find('div.title');
$file = fopen('php.txt', 'w');
foreach ($titles as $title) {
$subject = trim($title->plaintext)."\n";
fwrite($file, $subject);
}
fclose($file);
$html->clear();
Python
crawler.py
# -*- coding: utf-8 -*-
import sys
import requests
from bs4 import BeautifulSoup
reload(sys)
sys.setdefaultencoding('utf-8')
url = 'https://www.ptt.cc/bbs/NBA/index.html'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
titles = soup.find_all('div', 'title')
f = open('py.txt', 'w');
for title in titles:
f.write('%s\n' % title.text.strip())
f.close()
Node.js
- [request][]
- cheerio
crawler.js
const cheerio = require('cheerio');
const request = require('request');
const fs = require('fs');
const url = 'https://www.ptt.cc/bbs/NBA/index.html';
const out = fs.createWriteStream('nodejs.txt');
request(url, (err, res, body) => {
if (err) {
console.log(err);
}
const $ = cheerio.load(body);
const divs = $('div.title');
divs.each((i, item) => {
out.write($(item).text().trim() + '\n');
});
out.end();
});
้ไธๅ็จๅผๅท่ก็็ตๆๆๅพๅฐไธๆจฃ็ๅ งๅฎน,็ถ็ถ้ๆฏๅพ็ฐก็ฅ็็ฏไพ,็ ง็่ชช่ฆๅฏซไธไบๅฎน้ฏๅคๆท,ไฝ็ทด็ฟ็จ็็ฏไพๅ ้ๆจฃๅง,ๅ้ไธๅท่ก็ตๆๆฏ่ผไธไธ้ๅบฆ
PHP 7.0.22
$ time php crawler.php
real 0m0.614s
user 0m0.072s
sys 0m0.032s
real 0m0.570s
user 0m0.056s
sys 0m0.032s
real 0m0.570s
user 0m0.056s
sys 0m0.032s
real 0m0.515s
user 0m0.040s
sys 0m0.032s
real 0m0.515s
user 0m0.040s
sys 0m0.032s
real 0m0.515s
user 0m0.040s
sys 0m0.032s
Node.js v9.0.0
$ time node crawler.js
real 0m1.357s
user 0m0.244s
sys 0m0.396s
real 0m1.744s
user 0m0.376s
sys 0m0.312s
real 0m1.312s
user 0m0.272s
sys 0m0.380s
real 0m1.522s
user 0m0.348s
sys 0m0.304s
real 0m1.369s
user 0m0.288s
sys 0m0.396s
real 0m1.523s
user 0m0.388s
sys 0m0.344s
Python 2.7.12
$ time python crawler.py
real 0m0.666s
user 0m0.232s
sys 0m0.064s
real 0m0.682s
user 0m0.204s
sys 0m0.088s
real 0m0.709s
user 0m0.240s
sys 0m0.064s
real 0m0.624s
user 0m0.228s
sys 0m0.032s
real 0m0.669s
user 0m0.264s
sys 0m0.052s
real 0m0.698s
user 0m0.260s
sys 0m0.068s
ๅบๆฌไธ PHP ่ท Python ้ฝๆฏๆไธๅปไธไธๅฐฑๅๅฎไบ,Node.js ๆ็ญๅพ ็ๆ่ฆบ,ไธ็ฅ้ๆฏๅชๅ็ฐ็ฏๅบๅ้ก,ๆๆๆๆชๆกๅฏซๅ ฅ่ท dom ๆๅฐ็้จไปฝ้้,้ๅบฆๆฒๅทฎๅคๅฐ,ๆไปฅๆฏ [request][] ๅฅไปถๆ ข?ไฝ็ถฒ่ทฏๅคงๅฎถ้ฝๆจ [request][],ไปๆ่ฉฒไนๆฏๅบๆผ node.js ๅ งๅปบ็ http module ไธ็้ซ็ดๅฐ่ฃ,่ไธๅ ถไปไบบไน้ฝๆ็จๅฅไปถ,ๅช่ฝ่ชชๅนพไนๆๆฏๆฌกๆธฌ่ฉฆๆฑ่ฅฟ node.js ๆธๆ้ฝๆๅ่ปๅฐพ,็ฎๅ้ๆฏ้ธๆไฝฟ็จไปๅฅฝ็จ็ๅทฅๅ ท็พค็บไธป。