做爬虫,需要哪些技术,框架,工具支持?

发布于 2021-12-01 09:02:14 字数 13 浏览 816 评论 7

如题,谢牛!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

终止放荡 2021-12-06 14:47:33

1,某种变成语言中关于HTTP处理的部分(依照自己掌握的编程语言情况而定);

2,XML解析

3,数据存储(根据爬取的数据特点选择特定的数据结构进行存储)网页内容主要是:文本、音频、视频内容根据爬取的内容来选择

4,静态内容通过以上何容易处理;动态网页需要模拟器来模拟浏览器或出发动态内容的加载后,获取结果,

 

等风来 2021-12-06 14:43:30

什么都可以做 看你自己

韬韬不绝 2021-12-06 14:03:31

cheerio 兼容绝大多数jQuery css 选择器语法,学习成本小,想象空间大。

梅窗月明清似水 2021-12-06 12:18:56

nodejs, superagent或axios抓url,cheerio解析内容,mongo直接存储先(有必要的话,后续再清洗转换到其他数据库)……酸爽难以言表

心欲静而疯不止 2021-12-06 10:44:26

PHP,舍我其谁?寥寥几行代码就能把PHP官网的新闻采集下来存储到SQLite数据库并显示,不吓死你.

<?php
// php -S 127.0.0.1:8181 -t /home/eechen/www/
// http://127.0.0.1:8181/index.php
$file = '/home/eechen/data.db3';
$ddl = 'BEGIN; CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY AUTOINCREMENT, title VARCHAR(200), content TEXT, time VARCHAR(20)); COMMIT;';
if(!file_exists($file)) { $db = new PDO('sqlite:'.$file); $db->exec($ddl); } else { $db = new PDO('sqlite:'.$file); }

require dirname(__FILE__).'/simple_html_dom.php';
$html = file_get_html('http://cn2.php.net');
$db->beginTransaction();
foreach($html->find('article.newsentry') as $v) {
	$title = trim($v->find('h2.newstitle', 0)->plaintext);
	$content = trim($v->find('div.newscontent', 0)->plaintext);
	$time = trim($v->find('time', 0)->plaintext);
	$stmt = $db->prepare("INSERT INTO test (title, content, time) VALUES (?, ?, ?)");
	$stmt->execute(array($title, $content, $time));
	$stmt = null;
}
$db->commit();

header('Content-Type: text/plain; charset=utf-8');
var_export($db->query("SELECT * FROM test")->fetchAll(PDO::FETCH_ASSOC));

Simple-HTML-DOM 这个PHP的DOM操作库还是很方便的.
http://simplehtmldom.sourceforge.net/manual.htm

PHP并行发起多个HTTP请求可以用curl_multi:

<?php
$url[] = 'http://127.0.0.1:8080';
$url[] = 'http://127.0.0.2:8080';
$mh = curl_multi_init();
foreach($url as $k => $v) {
	$ch[$k] = curl_init($v);
	curl_setopt($ch[$k], CURLOPT_HEADER, 0); //不输出头
	curl_setopt($ch[$k], CURLOPT_RETURNTRANSFER, 1); //exec返回结果而不是输出,用于赋值
	curl_multi_add_handle($mh, $ch[$k]); //决定exec输出顺序
}
$running = null;
$starttime = microtime(true);
//执行批处理句柄(类似pthreads多线程里的start开始和join同步)
do {
	//CURLOPT_RETURNTRANSFER如果为0,这里会直接输出获取到的内容.如果为1,后面可以用curl_multi_getcontent获取内容.
	curl_multi_exec($mh, $running);
	//阻塞直到cURL批处理连接中有活动连接,不加这个会导致CPU负载超过90%.
	curl_multi_select($mh);
} while ($running > 0);
echo microtime(true) - $starttime."n"; //耗时约2秒
foreach($ch as $v) {
	$info[] = curl_getinfo($v);
	$json[] = curl_multi_getcontent($v);
	curl_multi_remove_handle($mh, $v);
}
curl_multi_close($mh);
var_export($json); 
var_export($info);

 

把昨日还给我 2021-12-06 04:59:48

最简单的流程:确认URL-->下载URL对应的页面源码(httpClient)-->分析源码中有价值信息(jsoup,正则)-->存储起来(数据库)-->可视化展示(图表)

晚风撩人 2021-12-05 16:55:45

Python

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文