增量爬取电影网站2级详情页面电影名称和下载链接

  • 需求
  • 步骤
需求

一级页面抓取:电影详情页链接
二级页面抓取:电影名称和电影下载链接
增量获取:网站中电影资源后将更新的数据爬取下来

步骤
  1. 确定响应内容中是否存在所需抓取数据(是否为静态页面):看是否能在源代码中搜到关键词
  2. 找url规律
    一级页面url规律:
    第n页:https://www.dytt8.net/html/gndy/dyzz/list_23_n.html
  3. 根据页面元素写正则
//一级页面正则
<table width="100%".*?<td width="5%".*?<a href="(.*?)".*?ulink">.*?</table>
//二级页面正则
<div class="title_all"><h1><font color=#07519a>(.*?)</font></h1></div>.*?<td style="WORD-WRAP.*?>.*?>(.*?)</a>
  1. 爬虫程序

    1. 多级页面抓取思路:
      先写1,2级页面通用的功能函数
      然后依次做1,2级页面该做的事
      最后设置增量抓取,将数据存入mysql数据库
from urllib import request
import re
import time
import random
from fake_useragent import UserAgent
import pymysql
from hashlib import md5
import sysclass FilmSkySpider(object):def __init__(self):self.url = 'https://www.dytt8.net/html/gndy/dyzz/list_23_{}.html'#连接Mysql,数据表为filmdbself.db = pymysql.connect('localhost','root','123456','filmskydb',charset='utf8')#创建游标self.cursor = self.db.cursor()#多级页面获取,先封装通用函数#功能函数1:获取htm的函数def get_html(self,url):headers = {'User=Agent':UserAgent().random}req = request.Request(url=url,headers=headers)#向网站发起请求并获取响应resp = request.urlopen(req)#读取响应,将传输的字节串转为字符串html = resp.read().decode('gb18030','ignore')    #这网站是GBK的,用gb18030是因为它能识别的最多,其他的还有gb2312,gbk,只能做到gb18030,如果还有解码错误的,用'ignore'表示忽略掉解码错误return html#功能函数2:re匹配出数据def parse_func(self,re_bds,html):p = re.compile(re_bds,re.S)r_list = p.findall(html)return r_list#解析提取所有需求数据def parse_html(self,one_url):#提取一级页面所需:二级页面链接#获取一级页面htmlone_html = self.get_html(one_url)#用re解析一级页面html得到链接,格式为['/html/xxx','/html/xxx','']re_dbs = '<table width="100%".*?<a class="ulink" href="(.*?)">.*?</table>'href_list = self.parse_func(re_dbs,one_html)#for循环一页一页提取二级页面数据for href in href_list:#拼出二级页面链接link = 'https://www.dytt8.net' + href#将链接用md5加密,转为fingers = md5()s.update(link.encode())finger = s.hexdigest()#若数据库中没有finger,表示网页中数据更新,抓if not self.is_go_on(finger):#向详情页发请求,提取名字和下载链接,将这个功能封装成函数self.parse_two_page(link)#抓取一个电影的所需信息后,休眠time.sleep(random.randint(1,2))#抓完后将finger存入request_finger表中ins = 'insert into request_finger value(%s)'self.cursor.execute(ins,[finger])self.db.commit()#网页数据未有更新,无需抓取,退出进程else:sys.exit('完成')#到指纹表request_finger中查看是否存在该fingerdef is_go_on(self,finger):sel = 'select finger from request_finger where finger=%s'result = self.cursor.execute(sel,[finger])#数据库中已有该finger时,返回给调用函数Trueif result:return True#解析提取二级页面数据具体的函数def parse_two_page(self,link):#获取二级页面htmltwo_html = self.get_html(link)#用re匹配二级页面html,格式为r_list:[(电影名称,下载链接)]re_bds = '<div class="title_all"><h1><font color=#07519a>(.*?)</font></h1></div>.*?<td style="WORD-WRAP.*?>.*?>(.*?)</a>'r_list = self.parse_func(re_bds,two_html)#将数据拼接成字典,以防有些网站故意做不同格式的标签断掉我的re(list返回空),为了防止程序断掉,用if r_list忽略为空的情况if r_list:item = {}item['name'] = r_list[0][0].strip()item['download'] = r_list[0][1].strip()print(item)#将二级页面所需数据存入数据表filmtabins = 'insert into filmtab value(%s,%s)'L = [item['name']],item['download']self.cursor.execute(ins,L)self.db.commit()#入口函数def run(self):for i in range(1,205):   #一共204页#拼接urlone_url = self.url.format(i)#调用解析,提取数据的函数self.parse_html(one_url)if __name__ == '__main__':spider = FilmSkySpider()spider.run()

增量爬取电影网站2级详情页面电影名称和下载链接相关推荐

  1. 爬取国家药品监督管理局详情页面信息

    学习链接b站:https://www.bilibili.com/video/BV1Yh411o7Sz?p=11 import requests import jsonurl = 'http://scx ...

  2. scrapy过滤重复数据和增量爬取

    原文链接 前言 这篇笔记基于上上篇笔记的---<scrapy电影天堂实战(二)创建爬虫项目>,而这篇又涉及redis,所以又先熟悉了下redis,记录了下<redis基础笔记> ...

  3. 爬虫概念与编程学习之如何爬取视频网站页面(三)

    先看,前一期博客,理清好思路. 爬虫概念与编程学习之如何爬取网页源代码(一) 爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二) 不多说,直接上代码. 编写代码 运行 <! ...

  4. python壁纸数据抓取_python 多线程爬取壁纸网站的示例

    基本开发环境 ・ Python 3.6 ・ Pycharm 需要导入的库 目标网页分析 网站是静态网站,没有加密,可以直接爬取 整体思路: 1.先在列表页面获取每张壁纸的详情页地址 2.在壁纸详情页面 ...

  5. Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)

    Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...

  6. Scrapy翻页爬取示例——列表页、详情页

    Scrapy翻页爬取示例--列表页.详情页 引言: 本人最近在帮助同事们爬取一批英-泰双语数据,顺带复习了一下scrapy爬虫相关的知识.下面以简单的小项目为例,一起来开始吧! 示例一:爬取列表页 本 ...

  7. 爬虫爬取二次元网站美女图片

    爬虫爬取二次元网站美女图片 前言 xpath解析 需求分析 代码编写 总代码 前言 本次需要爬取二次元网站cos板块下的图片 需要用到request模块与lxml模块,所以请提前安装好这两个模块,打开 ...

  8. 爬取京东网站前后一星期的笔记本电脑信息并可视化

    分析我们需要爬取的网站,发现京东网页只需通过keyword和page就可正常访问,且page的数值是奇数 爬取思路 首先获取一百页的商品信息,再在每一页中获取商品详情页的链接,并将每一个商品的店铺名获 ...

  9. python爬虫——爬取淘票票正在热映电影

    今天正好学习了一下python的爬虫,觉得收获蛮大的,所以写一篇博客帮助想学习爬虫的伙伴们. 这里我就以一个简单地爬取淘票票正在热映电影为例,介绍一下一个爬虫的完整流程. 首先,话不多说,上干货--源 ...

最新文章

  1. 大数据时代的网络视频营销
  2. 【划分树+二分】HDU 4417 Super Mario
  3. Java将Long类型转换为时分秒
  4. Java iText PDF:用 iText 包生成简单的 pdf 文件
  5. 服务器子系统是什么,服务器是什么样子的,服务器一般用什么系统!
  6. SAP Fiori + Vue = ? 1
  7. 第三方登录 人人php,人人网第三方登录接口方案
  8. SYSU每周一赛(13.03.16)1003
  9. 辞去美国终身教职!顶尖学者,加盟“双一流”高校
  10. java se入门_java SE 入门之运算符(第三篇)
  11. pid调节软件_(四)差分底盘设计——5.底盘PID控制参数整定
  12. JsonCpp常见用法
  13. 手机无启动抓拍的想法
  14. Java周记(第五周)
  15. 概率论与数理统计思维导图_“我更强调统计学的思维”——专访北京师范大学未来教育学院李勇教授...
  16. ArcGIS软件操作问题及解决方法总结
  17. 有限维空间上的线性算子
  18. 如何搭建一个属于自己的在线wiki文档系统?
  19. 百度、腾讯、搜狐、360等产品职位笔试智力题分析
  20. android logo制作教程视频,Android的APP怎样制作LOGO的尺寸

热门文章

  1. WeRateDog---分析推特数据
  2. ICG-NHS吲哚菁绿-琥珀酰亚胺脂的相关简介;CAS: 1622335-40-3
  3. ios python 越狱_iOS越狱--USB连接SSH
  4. 【iOS】越狱入门梳理
  5. 成功者根本没有告诉你故事的全部 (转文)
  6. leetcode:BFS/DFS--腐烂的橘子
  7. Android热更新
  8. PDF如何旋转其中一页?
  9. 安卓APP源码和设计报告——小说阅读器
  10. Weex 在双11会场的大规模应用