去除搜索页 右下角广告
找到如下3行,在前面添加//进行注释,保存
if(Math.random() < 0.5){ document.write('<script src="#"><\/script>'); }else{ document.write('<script src="#"><\/script>'); } if(window.location.href.indexOf('/info/') > -1){ document.writeln("<script language=\"JavaScript\" type=\"text/javascript\" src=\"http://js.6dad.com/js/xiaoxia.js\"></script>"); document.writeln("<script language=\"JavaScript\" type=\"text/javascript\" src=\"http://js.ta80.com/js/12115.js\"></script>"); } if(navigator.language != 'zh-CN'){ //document.writeln('<script type="text/javascript" src="#"></script>'); document.writeln('<script type="text/javascript" src="#"></script>'); }
搜索中文报错
解决办法:
如果是centos7系统,修改/usr/lib64/python2.7/site.py
vi /usr/lib64/python2.7/site.py
在import sys下添加2行:
reload(sys) sys.setdefaultencoding('utf8')
爬虫运行时 可能会遇到如下问题:
Python and Django OperationalError (2006, ‘MySQL server has gone away’)
解决方法:
http://stackoverflow.com/questions/14163429/python-and-django-operationalerror-2006-mysql-server-has-gone-away
/etc/my.cnf 在最后一行的下面添加
wait_timeout=2880000 interactive_timeout = 2880000 max_allowed_packet = 512M
常见问题
1.必须centos7吗?
非常建议使用centos7,centos6可能会有意想不到的错误
2.怎么查看入库的文件?
登录管理员后台,点击 Hashs
3.怎么查看每天入库了多少文件,以便清楚入库效率?
登录管理员后台,点击 Status reports
4.如何确认web服务器、采集、入库正在运行?
在SSH控制平台输入命令
ps -ef|grep python
会有如下程序在运行
python manage.py runserver 0.0.0.0:80 python simdht_worker.py python index_worker.py
表示正在运行
5.如出现没有模块pygeoip,请使用命令
pip install pygeoip
进行安装
[root@li433-14 ssbc-master]# python workers/simdht_worker.py Traceback (most recent call last): File “workers/simdht_worker.py”, line 28, in <module> import pygeoip ImportError: No module named pygeoip
6.IOError: [Errno 2] No such file or directory: ‘GeoIP.dat’提示错误,解决办法:
从http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz下载GeoIP包,上传到/root/ssbc-master文件夹即可。
[root@li433-14 ssbc-master]# python workers/simdht_worker.py exceptions must be old-style classes or derived from BaseException, not NoneType exceptions must be old-style classes or derived from BaseException, not NoneType Traceback (most recent call last): File “workers/simdht_worker.py”, line 39, in <module> import simMetadata File “/root/ssbc-master/workers/simMetadata.py”, line 11, in <module> from simdht_worker import entropy File “/root/ssbc-master/workers/simdht_worker.py”, line 41, in <module> from metadata import save_metadata File “/root/ssbc-master/workers/metadata.py”, line 14, in <module> geoip = pygeoip.GeoIP(‘GeoIP.dat’) File “/usr/lib/python2.7/site-packages/pygeoip/__init__.py”, line 75, in __call__ cls._instances[filename] = super(_GeoIPMetaclass, cls).__call__(*args, **kwargs) File “/usr/lib/python2.7/site-packages/pygeoip/__init__.py”, line 118, in __init__ self._fp = codecs.open(filename, ‘rb’, ENCODING) File “/usr/lib64/python2.7/codecs.py”, line 881, in open file = __builtin__.open(filename, mode, buffering) IOError: [Errno 2] No such file or directory: ‘GeoIP.dat’
7.”Can’t connect to MySQL server on ’12 7.0.0.1′ (111)”,无法连接到数据库。
在运行脚本之前需要修改2个文件,因为从git上下载下来的源码里写的mariadb的端口是9306,我们这里做一下修改改成3306,否则无法启动。workers/index_worker.py:24行,search/models.py:13行,把9306替换成3306。否则会出现无法连接数据库。
可能是因为sphnix的原因造成的,由于先前的版本是先运行脚本然后再运行sphnix,所以会报错,这里我们已经将过程进行对调。
[root@li433-14 ssbc-master]# python manage.py makemigrations Traceback (most recent call last): File “manage.py”, line 10, in <module> execute_from_command_line(sys.argv) File “/usr/lib/python2.7/site-packages/django/core/management/__init__.py”, li ne 338, in execute_from_command_line utility.execute() File “/usr/lib/python2.7/site-packages/django/core/management/__init__.py”, li ne 312, in execute django.setup() File “/usr/lib/python2.7/site-packages/django/__init__.py”, line 18, in setup apps.populate(settings.INSTALLED_APPS) File “/usr/lib/python2.7/site-packages/django/apps/registry.py”, line 108, in populate app_config.import_models(all_models) File “/usr/lib/python2.7/site-packages/django/apps/config.py”, line 198, in im port_models self.models_module = import_module(models_module_name) File “/usr/lib64/python2.7/importlib/__init__.py”, line 37, in import_module __import__(name) File “/root/ssbc-master/search/models.py”, line 13, in <module> search_conn = mdb.connect(‘127.0.0.1’, ‘root’, ”, ”, port=9306, charset=’u tf8′, cursorclass=MySQLdb.cursors.DictCursor) File “/usr/lib64/python2.7/site-packages/MySQLdb/__init__.py”, line 81, in Con nect return Connection(*args, **kwargs) File “/usr/lib64/python2.7/site-packages/MySQLdb/connections.py”, line 193, in __init__ super(Connection, self).__init__(*args, **kwargs2) _mysql_exceptions.OperationalError: (2003, “Can’t connect to MySQL server on ’12 7.0.0.1′ (111)”) [root@li433-14 ssbc-master]# grep -rn 9306 /root/ssbc-master #查找一下文件夹中包含9306的文件 workers/index_worker.py:24:dst_conn = mdb.connect(DST_HOST, DST_USER, DST_PASS, ‘rt_main’, port=9306, charset=’utf8′) search/models.py:13:search_conn = mdb.connect(‘127.0.0.1’, ‘root’, ”, ”, port 9306, charset=’utf8′, cursorclass=MySQLdb.cursors.DictCursor)
运行一段时间就停止的原因
文末附上方法二修改后的爬虫源码(simdht_worker.py)
index_worker.py是用来建立索引,和simdht_worker.py问题一样,运行一会儿就停止,导致无法搜索到新数据。所以也需要修复下
如何关闭调试模式?设置404页面
ssbc 是 基于 django 框架写的,所以这本应该属于 django 的问题范畴。但鉴于很多用户都是小白,我简单说下
注:我不熟悉django,就用过一次,如果哪儿写的不妥,欢迎指出
如何关闭调试模式呢
在 ssbc/setting.py 中将 DEBUG = True 改为 DEBUG = False
这样就关闭了调试模式,但还没完。现在访问,会直接出现 500 的错误,这是静态资源造成的
下面给出解决方案
在 ssbc/setting.py 中将
STATIC_ROOT = os.path.join(BASE_DIR, 'www/static')
修改为
STATIC_ROOT = os.path.join(BASE_DIR, 'web/static')
将下面这行注释掉
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
在 ssbc/urls.py 中导入 settings 包,然后再 urlpatterns 中添加
url(r'^static/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT})
现在访问出现404后,显示的是我们制定的404页面,而不是错误页面了
附上,上面修改的四个文件
注意:在修改正在运行的程序是一定要结束运行再修改。
结束命令为 kill (具体操作请google)