1.数据库设计:
source表(播放源):
id | name | desc | parse | show |
---|---|---|---|---|
自增id | 播放源名称 | 播放源描述 | 解析url | 展示名 |
video表:
id | title | desc | type | area | thumb | year | director | introduction | actors |
---|---|---|---|---|---|---|---|---|---|
视频id | 视频名称 | 视频描述 | 类型(1:电影,2:电视剧,3:综艺,4:动漫) | 地区 | 缩略图 | 年份 | 导演 | 简介 | 演员 |
play表:
id | video_id | from | url | part |
---|---|---|---|---|
自增id | 视频id(与video.id关联) | 播放源名称(与source.name关联) | 播放地址 | 集数 |
2.环境:
- python 3.6.6
- 所用模块:
- scrapy:编写爬虫
- scrapy-redis:与scrapy结合实现增量式爬虫
- requests:发送post,get请求
- windows7系统
- mysql数据库:存储数据
- redis数据库
3.创建项目:
scrapy startproject project_name
4. settings.py
LOG_LEVEL="WARNING"
USER_AGENT="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'Scrapy_www_vultr1_com (+http://www.yourdomain.com)'
# Obey robots.txt rules
ROBOTSTXT_OBEY = False
5.爬虫编写:
初始化(连接数据库):
def __init__(self):
dict = {
}
dict["host"] = self.MYSQL_HOST
dict["port"] = self.MYSQL_PORT
dict["user"] = self.MYSQL_USER
dict["passwd"] = self.MYSQL_PWD
dict["db"] = self.MYSQL_DB
dict["use_unicode"]=True
dict["charset"]="utf8"
self.db = MySQLdb.connect(**dict)
#self.playerconfig()
处理响应:
def parse(self, response):
href_list = response.xpath("//ul[@class='stui-header__menu type-slide']/li/a/@href")[1:-1]
for href in href_list:
_type=re.search(r"v/(\d*).html",href.get()).group(1)
yield scrapy.Request(self.domain+href.get(),callback