V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
yumenoks
V2EX  ›  Python

一个爬虫的过滤问题

  •  
  •   yumenoks · 2019-07-16 15:25:50 +08:00 · 1914 次点击
    这是一个创建于 1961 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在写个爬取 url 的爬虫,原理大概是从一个起始的 url 开始爬,然后获取整个页面的链接地址,然后顺着收集到的 url 进行广泛的爬取,这里面出现 2 个问题没找到合适的办法解决.
    1,会爬去到国外去
    2,会爬到蜘蛛池(一种泛站程序,可以无限多的生成 N 个域名的网站类似,asd123.123.com assss.123.com 123.234.com)

    目前通过判断标题是否是中文来避免是不是爬到国外的站,
    还有一个就是放一个黑名单的表.存在就不爬.
    但是蜘蛛池的域名实在太多了,也找不到太多规律的东西进行判断.
    V 友们友什么好的建议么?
    6 条回复    2019-07-17 13:30:20 +08:00
    alanv2
        1
    alanv2  
       2019-07-16 16:28:37 +08:00
    制定 url 的匹配规则(正则),符合规则的 url 才爬,其他的过滤
    cwjokaka
        2
    cwjokaka  
       2019-07-16 16:35:07 +08:00
    设置一个爬取深度
    yumenoks
        3
    yumenoks  
    OP
       2019-07-16 18:32:50 +08:00
    @cwjokaka 只爬去一个 url 的主页的链接,
    yumenoks
        4
    yumenoks  
    OP
       2019-07-16 18:34:24 +08:00
    @alanv2 开始是直接获取整个页面的链接,然后进行过滤,对 URL 的长度,后缀进行了过滤,
    如果设置成 域名带有 WWW 的才保存的话,数量就很少.如果不这样设置的话就会跑到蜘蛛池里面去.所以有点尴尬.
    ClericPy
        5
    ClericPy  
       2019-07-17 00:49:19 +08:00
    国外的有域名就有 ip,有 ip 就有地域吧,一大堆速度超快的 ip 转地域的,淘宝啊搜狐啊腾讯啊
    遇到爬虫陷阱爬虫蜜罐或者脏数据混淆等反爬手段,没啥好办法啊,socket 连一下试试域名存在性?控制友好频率上代理池才是正路子,就算撇开是否合法,频率太高会被当作 dos 攻击告你的
    yumenoks
        6
    yumenoks  
    OP
       2019-07-17 13:30:20 +08:00
    @ClericPy IP 倒不是瓶颈,不是针对单站爬行的,每个站只会访问 1-2 次而已
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3700 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:43 · PVG 18:43 · LAX 02:43 · JFK 05:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.