设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3803|回复: 5

对猫眼电影网站电影top100的爬取

  [复制链接]

20

主题

162

金钱

264

积分

入门用户

发表于 2019-8-15 14:35:09 | 显示全部楼层 |阅读模式

  1. import urllib.request
  2. import re
  3. import pymysql
  4. import warnings

  5. class MaoyanSpider:
  6.     def __init__(self):
  7.         self.headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60"}
  8.         self.baseurl = "http://maoyan.com/board/4?offset="
  9.         self.offset = 0
  10.         self.page = 1
  11.         # 数据库连接对象
  12.         self.db = pymysql.connect("localhost","root",
  13.                              "123456",charset="utf8")
  14.         # 游标对象
  15.         self.cursor = self.db.cursor()


  16.     # 获取页面
  17.     def getPage(self,url):
  18.         req = urllib.request.Request(url,headers=self.headers)
  19.         res = urllib.request.urlopen(req)
  20.         html = res.read().decode("utf-8")
  21.         self.parsePage(html)
  22.    
  23.     # 解析页面
  24.     def parsePage(self,html):
  25.         p = re.compile('<div class="movie-item-info">.*?title="(.*?)".*?class="star">(.*?)</p>.*?class="releasetime">(.*?)</p>',re.S)
  26.         r_list = p.findall(html)
  27.         # r_list:[("霸王别姬","张国荣","1993"),(),()]
  28.         self.writeTomysql(r_list)
  29.         
  30.     # 保存数据
  31.     def writeTomysql(self,r_list):
  32.         c_db = 'create database if not exists myfilm charset utf8'
  33.         u_db = 'use myfilm'
  34.         c_tab = 'create table if not exists top100(\
  35.                  id int primary key auto_increment,\
  36.                  name varchar(50),\
  37.                  star varchar(100),\
  38.                  time varchar(50)\
  39.                  )'
  40.         ins = 'insert into top100(name,star,time) \
  41.                values(%s,%s,%s)'
  42.         # 过滤警告
  43.         warnings.filterwarnings("ignore")
  44.         try:
  45.             self.cursor.execute(c_db)
  46.             self.cursor.execute(u_db)
  47.             self.cursor.execute(c_tab)
  48.         except:
  49.             pass

  50.         # 插入记录
  51.         for r_tuple in r_list:
  52.             L = [r_tuple[0].strip(),r_tuple[1].strip(),r_tuple[2].strip()]
  53.             # execute(ins,[列表])
  54.             self.cursor.execute(ins,L)
  55.             self.db.commit()
  56.             print("存入数据库成功")

  57.     # 主函数
  58.     def workOn(self):
  59.         while True:
  60.             c = input("爬按y,退出按q:")
  61.             if c.strip().lower() == "y":  
  62.                 url = self.baseurl + str(self.offset)
  63.                 self.getPage(url)
  64.                 self.page += 1
  65.                 self.offset = (self.page - 1)*10
  66.             else:
  67.                 print("爬取结束")
  68.                 break
  69.                
  70. if __name__ == "__main__":
  71.     spider = MaoyanSpider()
  72.     spider.workOn()
  73.    
复制代码

7

主题

368

金钱

3140

积分

中级用户

发表于 2020-1-2 20:40:15 | 显示全部楼层
谢谢分享,有才!
ximenyan
回复 支持 反对

使用道具 举报

7

主题

368

金钱

3140

积分

中级用户

发表于 2020-1-2 20:40:36 | 显示全部楼层
,great!
ximenyan
回复

使用道具 举报

0

主题

330

金钱

524

积分

初级用户

发表于 2020-9-6 09:10:35 | 显示全部楼层
学习一下,:D
回复 支持 反对

使用道具 举报

0

主题

330

金钱

524

积分

初级用户

发表于 2020-9-6 09:58:11 | 显示全部楼层
学习一下
回复

使用道具 举报

0

主题

34

金钱

44

积分

新手用户

发表于 2020-11-24 16:21:04 | 显示全部楼层
学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表