您当前的位置: 首页 >  Python

嗨学编程

暂无认证

  • 1浏览

    0关注

    1405博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python爬取电影天堂前30页最新电影以及下载地址

嗨学编程 发布时间:2019-08-09 20:30:20 ,浏览量:1

爬取电影天堂前30页最新电影以及下载地址

  1. 打印程序执行时间
  2. 数据爬下来后做处理(字符串),定义成字典
  3. 一条龙: 获取 -> 调用解析 -> 数据处理
from urllib import request
import time
import re
import pymysql
import random
'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
class MaoyanSpider(object):
    def __init__(self):
        self.url = 'https://maoyan.com/board/4?offset={}'
        self.headers={'User-Agent':'Mozilla/5.0'}
        # 用于记录页数
        self.page = 1
        # 创建数据库连接对象和游标对象
        self.db = pymysql.connect(
            'localhost','root','123456','maoyandb',charset='utf8'
        )
        self.cursor = self.db.cursor()


    # 获取网页
    def get_page(self,url):
        req = request.Request(
            url=url,
            headers=self.headers
        )
        res = request.urlopen(req)
        html = res.read().decode('utf-8')
        # 直接调用解析函数
        self.parse_page(html)

    # 解析网页
    def parse_page(self,html):
        pattren = re.compile('
.*?title="(.*?)".*?class="star">(.*?)

.*?releasetime">(.*?)

',re.S) r_list = pattren.findall(html) print(r_list) self.write_page(r_list) # 存入mysql数据库(executemany([ [],[],[] ])) def write_page(self,r_list): # 定义空列表 film_list = [] ins = 'insert into filmtab values(%s,%s,%s)' # 处理数据,放到大列表film_list中 for rt in r_list: one_film = [ rt[0],rt[1].strip(),rt[2].strip()[5:15] ] # 添加到大列表中 film_list.append(one_film) # 一次数据库IO把1页数据存入 self.cursor.executemany(ins,film_list) # 提交到数据库执行 self.db.commit() def main(self): for offset in range(0,31,10): url = self.url.format(offset) self.get_page(url) time.sleep(random.randint(1,3)) print('第%d页爬取完成' % self.page) self.page += 1 # 断开数据库(所有页爬完之后) self.cursor.close() self.db.close() if __name__ == '__main__': start = time.time() spider = MaoyanSpider() spider.main() end = time.time() print('执行时间: %.2f' % (end-start))
关注
打赏
1663681728
查看更多评论
立即登录/注册

微信扫码登录

0.0886s