Sign inSign up

kevinzhow/url-parser

By kevinzhow

•Updated over 7 years ago

parser for URL

Image
0

280

kevinzhow/url-parser repository overview

⁠URL Parser

⁠API

⁠请求

POST /parse

⁠参数

url=url_string

说明:url 需要以 http/https 开头

⁠输出

正常情况

{
	"card": {
		"duration": null,
		"short_desc": "茜与小太郎。初三时第一次被分到同班,相识的两人。同班同学、社团伙伴、教师、父母……与周围的关联,自己的成长。在那个一边被变化与不安追着,一边慌慌张张地向前飞奔的季节之中,稚嫩而又令人眩目的青春期...",
		"thumbnail": "http://i0.hdslb.com/bfs/bangumi/5ce66f68d54052e3a305524b9b06a76977e974fc.jpg_124x172.jpg",
		"title": "月色真美",
		"url": "http://bangumi.bilibili.com/anime/5989/play"
	}
}

url 不是 http/https 开头

{
    "code": "bad_request",
    "status": 400
}

服务器错误,可能是超时或者中间哪里出了问题,具体见 newrelic 错误搜集

{
    "code": "server_error",
    "status": 500
}

⁠调试

GET /debug

访问这里可以进行简单的 url 测试

⁠配置参数

# 国内外请求使用代理的情况
# 代理支持 http(需要支持 CONNECT 才能连接 https 网站) 和 socks5,填写格式如下
# ['http://user:[email protected]:80', 'socks5://myproxy:9191']
MAINLAND_PORIES = None
OVERSEAS_PORIES = None

# 爬虫爬取时的 retry 和每次请求的超时时间
CRAWLER_RETRY = 3
CRAWLER_TIMEOUT = 20

# redis 缓存配置
CACHE_TYPE = 'redis'
CACHE_REDIS_HOST = 'localhost'
CACHE_REDIS_PORT = 6379
CACHE_REDIS_DB = 0
CACHE_KEY_PREFIX = 'url:'
CACHE_TIMEOUT = 300

⁠规则文件配置

文件在 urlparser/settings/rules.json

{
    "PHANTOM_HOSTS":  {
        "music.163.com": {"frame_id": "g_iframe"}
    },
    "CARD_TYPE_HOSTS": {
        "music.163.com": {"type": "music"},
        "y.qq.com": {"type": "music"},
        "www.xiami.com": {"type": "music"},
        "v.qq.com": {"type": "video"},
        "v.youku.com": {"type": "video"},
        "www.bilibili.com": {"type": "video"}
    },
    "TITLE_FILTER_HOSTS": {
        "music.163.com": "- 网易云音乐$",
        "y.qq.com": "- QQ音乐 - .*$",
        "www.xiami.com": "- 虾米音乐$",
        "v.qq.com": "_腾讯视频$",
        "v.youku.com": "—优酷网,视频高清在线观看$",
        "www.bilibili.com": "_bilibili_哔哩哔哩$",
        "detail.tmall.com": "-tmall.com天猫$"
    }
}

其中 TITLE_FILTER_HOSTS 中要删除的部分是用正则匹配的,所有 hosts 都支持前缀匹配,比如 *.163.com 可以匹配 music.163.com 和 p1.music.163.com

⁠Docker 部署方法

  1. 参数配置
# newrelic
NEW_RELIC_CONFIG_FILE: ./newrelic.ini
NEW_RELIC_LICENSE_KEY: <app_key>

# flask
USE_DOCKER: 'yes'
FLASK_xxx: ''

Flask 相关的配置需要以 FLASK_ 开头,比如 FLASK_CACHE_REDIS_HOST 完整例子见 docker-compose.yml

  1. 构建 docker 镜像
docker build -t urlparser:v1 .
  1. 端口映射和配置文件映射都已经放到了 docker-compose.yml 文件中,自己可以按照自己部署的方法使用 docker 或者 docker-compose 启动
docker-compose up

如果你的本机器下载太慢,可以修改命令行里面的代理地址来使用自己的本机代理加速

docker build -t urlparser:v1 --build-arg HTTP_PROXY=http://192.168.65.1:1235 --build-arg HTTPS_PROXY=http://192.168.65.1:1235 .

⁠其他说明

  • 需要 js 渲染后抓取的页面的 drive 目前使用的是默认的 PhantomJS,可以换到 Firefox 或者 Chrome,不过相关的镜像里面需要安装 Chrome/Firefox 浏览器
  • PhantomJS 暂时不支持走代理,暂时只找到开启进程时跑代理的方法
  • 部分视频音乐网站的版权内容需要登录才能播放,抓取到的是 404 页面
  • youku 视频网页中没有封面图

Tag summary

Content type

Image

Digest

Size

170.3 MB

Last updated

over 7 years ago

docker pull kevinzhow/url-parser