前段时间我们弄了btlike项目,但是后来停止更新了。 现在我们重新立了一个btlet的项目,大家有兴趣的话可以来看看。
演示地址:http://www.btlet.com
github地址:https://github.com/qsbaq/btlet.com
爬虫是Go写的,PHP部分基于Onethink PHP。
如果大家觉得项目好的话,记得赞助我们哦~
Table of Contents
- 1 VPS主机推荐:
- 2 环境需求:
- 3 推荐PHP空间
- 3.1 安装步骤:
- 3.1.1 1、新建数据库 btlet ,导入 init.sql
- 3.1.2 2、运行爬虫(爬虫可以分布在多台机器上同时运行,使用参数连接到指定数据库即可) , 参数详情:
- 3.1.3 3、上传文件到php空间中(空间必须支持 php-mysqli 扩展),并确保文件权限:
- 3.1.4 4、配置php中的数据库文件:
- 3.1.5 5、Rewrite 配置
- 3.1.6 6、前端php后台地址(请确保上面的rewrite已正常工作,否则无法打开后台)
- 3.1.7 7、Linux中每12小时,重启爬虫spider。我们把爬虫放在/root目录中
- 3.1.8 8、设置每天爬取统计,同爬虫设置一样
- 3.1.9 9、启用sphinx/coreseek搜索(可选项)
- 3.2 原生的sphinx教程,使用coreseek的不需要安装:
- 3.1 安装步骤:
- 4 配置PHP文件:
VPS主机推荐:
Vultr 充5美元可以用5个月VPS 充值最高送100美元
环境需求:
64位的系统版本( x64)
php > 5.3.0 mysql
推荐PHP空间
2287空间:http://www.22g87.com
老季淘宝店:https://item.taobao.com/item.htm?id=41356970136
安装步骤:
1、新建数据库 btlet ,导入 init.sql
2、运行爬虫(爬虫可以分布在多台机器上同时运行,使用参数连接到指定数据库即可) , 参数详情:
-u=”btlet” 数据库用户名
-p=”laoji.org” 数据库密码
-h=”v.laoji.org” 数据库地址,默认是localhost
-d=”btlet” 数据库名
-P=”3306″ 数据库端口,默认3306
Windows ( spider.exe-forwin 重命名为:spider.exe,可以先运行文件夹中的 cmd.bat ,然后运行一下命令):
1 |
spider.exe -u="数据库用户名" -p="数据库密码" -d="数据库名" |
Linux ( spider-forlinux 重命名为:spider):
1 2 |
chmod +x spider //第一次运行时需要添加可执行权限 ./spider -u="数据库用户名" -p="数据库密码" -d="数据库名" |
爬虫可以分散在N台机器上运行,只需指定数据库IP
1 |
-u="数据库用户名" -p="数据库密码" -d="数据库名" -h="数据库域名地址或IP" |
注:爬虫必须在公网IP上运行,内网爬不到数据 Linux下同理,可以将爬虫挂在screen命令中运行。
Screen运行实例:
1 2 |
screen -S laoji ./spider -u="数据库用户名" -p="数据库密码" -d="数据库名" |
等到开始跳出文字,刚开始的时候有些慢。直到出现下面内容: 2017/02/21 07:11:54 ed2bea744442aafd21102d6e2f5d52eb7d2973d4 2017/02/21 07:12:07 c26ede340f0f620dab01835f48177bbbfbf27dc0
切出Screen返回刚才的终端:
CTRL+A,d
具体Screen使用方法请看:Linux Screen 简单用法 图文教程
3、上传文件到php空间中(空间必须支持 php-mysqli 扩展),并确保文件权限:
Runtime (Linux中确定权限为777:chmod 777 Runtime -R)
4、配置php中的数据库文件:
将/Application/Common/Conf/config.sample.php重命名为: Application/Common/Conf/config.php,修改 第40行开始:
1 2 3 4 5 6 7 8 9 |
/* 数据库配置 */ 'DB_TYPE' => 'mysqli', // 数据库类型 'DB_HOST' => 'localhost', // 服务器地址 'DB_NAME' => 'btlet', // 数据库名 'DB_USER' => 'btlet', // 用户名 'DB_PWD' => 'laoji.org', // 密码 'DB_PORT' => '3306', // 端口 'DB_CHARSET' => 'utf8mb4', 'DB_PREFIX' => 'laoji_', // 数据库表前缀 |
将/Application/User/Conf/config.sample.php重命名为:/Application/User/Conf/config.php。修改 第18行:
1 |
define('UC_DB_DSN', 'mysqli://数据库用户名:数据库密码@数据库地址:3306/数据库名'); // 数据库连接,使用Model方式调用API必须配置此项 |
5、Rewrite 配置
nginx下配置Rewrite规则:
1 2 3 |
if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1; } |
Apache 环境下只需支持.htaccess即可。
1 2 3 4 5 6 7 8 |
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule> |
6、前端php后台地址(请确保上面的rewrite已正常工作,否则无法打开后台)
/admin 默认
用户名:admin
默认密码:laoji.org
7、Linux中每12小时,重启爬虫spider。我们把爬虫放在/root目录中
crontab -e
添加如下命令:
1 |
1 */6 * * * pkill spider ; cd /root && ./spider -u="btlet" -p="密码" -h="127.0.0.1" -d="btlet" >> /dev/null 2>&1 & |
8、设置每天爬取统计,同爬虫设置一样
1 2 |
chmod +x statistics //首次运行时需要 ./statistics -u="btlet" -p="jjjjjj" -h="127.0.0.1" -date="2017-02-16" |
Linux 下 可以加入到crontab中,
1 |
0 */6 * * * cd /root && ./statistics -u="btlet" -p="jjjjjj" >> /dev/null |
-date=”2017-02-16″ // 指定统计日期,如不带此参数默认统计昨天的数据
windows中可以加入到计划任务中。
9、启用sphinx/coreseek搜索(可选项)
在crontab中添加coreseek定时重建索引任务:
crontab -e
1 |
0 */6 * * * /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --rotate --all >> /dev/null |
原生的sphinx教程,使用coreseek的不需要安装:
CentOS6.4 64位下安装sphinx及sphinx for php扩展
必须确定php环境已支持sphinx,在phpinfo中看到如下扩展:
配置sphinx.conf
vi /usr/local/sphinx/etc/sphinx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# # Minimal Sphinx configuration sample (clean, simple, functional) # source btlet { type = mysql sql_host = localhost sql_user = btlet sql_pass = laoji.org #数据库密码 sql_db = btlet sql_port = 3306 # optional, default is 3306 sql_query = \ SELECT id,name,infohash,files, UNIX_TIMESTAMP(update_time) AS update_time FROM laoji_infohash # sql_attr_uint = id sql_attr_string = name sql_attr_string = infohash sql_field_string = files sql_attr_timestamp = update_time } index infohash { source = btlet path = /usr/local/sphinx/var/data/hash } indexer { mem_limit = 128M } searchd { listen = 9312 listen = 9306:mysql41 log = /usr/local/sphinx/var/log/searchd.log query_log = /usr/local/sphinx/var/log/query.log read_timeout = 5 max_children = 30 pid_file = /usr/local/sphinx/var/log/searchd.pid seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 workers = threads # for RT to work binlog_path = /usr/local/sphinx/var/data } |
配置PHP文件:
在php的配置文件中启用Application/Common/Conf/config.php
1 |
'USE_SPHINX' => true, |
常见问题:
-
bash: ./spider: cannot execute binary file
请检查系统版本是64位的( x64)版本。我们git包里只编译了X64的,X86的有环境的小伙伴可以自行编译。 大家有什么问题的话可以在这里留言或者加QQ群提问!

后台一直提示验证码错误,无法登陆进去。
百度搜索一下OneThink跳过验证码~
请问后台密码怎么修改,看了一下数据库,不是MD5加密。。。。
爬虫报错:
panic: Error 1153: Got a packet bigger than 'max_allowed_packet' bytes
需要修改mysql的里max_allowed_packet的值
panic: Error 1366: Incorrect string value: '\xB7s\xA7@37...' for column 'name' at row 1
博主爬虫遇到这样的情况如何解决?
name长度不对,将数据库中的name加长
varchar 250 了,是不是要改成text
改成text也是一样出这个错误是否是编码问题?
爬虫经常停止,name那个编码问题吗
亲,你应该找个大内存的vps
2G内存
panic: Error 1366: Incorrect string value: '\xD3\xC5\xD0\xE3\xB6\xF9...' for column 'name' at row 1
爬蟲经常出现这样停止了。
种子的名称过长导致了错误,可以尝试将name的长度改大一些。
把字符集统一改为utf8mb4,还是一样。这个是不是需要go里面进行字符的处理呢,
go 里面使用的是UTF8的编码,跟php是一致的。
panic: Error 1366: Incorrect string value: '\xC1\xEB\xE8\xE7\xED\xE5...' for column 'name' at row 1
就是这样。编码都是统一的。这个是不是特殊字符引起的呢?
爬虫经常自动停了,如何解决? panic: Error 1406: Data too long for column 'files' at row 1
你的files文件长度不对,检查一下见结构吧~
其实,我觉得,既然是爬虫和服务器分开的版本,建议你修改一下爬虫,让它可以在内网运行哦,我记得我以前见到过可以内网运行的爬虫,只要映射一下端口就可以了,毕竟,现在很大一部分的vps都是不允许爬虫运行的。
为什么导入数据库的时候会出现这个#1067 - Invalid default value for 'field_group'
拷贝所有语句直接在sql里运行。
请问这个有安装教程么
这个教程已经很详细,没有更详细的安装教程了。
有什么别的问题可以加群。
支持中文搜索的,请看演示站。
求问博主
这个跟ssbc比较 采集效率和稳定性 哪个更好呢
目前尚在测试中。