python爬虫--爬取某网站电影信息并写入mysql数据库
书接上文,前文最后提到将爬取的电影信息写入数据库,以方便查看,今天就具体实现。
首先还是上代码:
# -*- coding:utf-8 -*-
import requests
import re
import mysql.connector #changepage用来产生不同页数的链接
def changepage(url,total_page):
page_group = ['https://www.dygod.net/html/gndy/jddy/index.html']
for i in range(2,total_page+1):
link = re.sub('jddy/index','jddy/index_'+str(i),url,re.S)
page_group.append(link)
return page_group
#pagelink用来产生页面内的视频链接页面
def pagelink(url):
base_url = 'https://www.dygod.net/html/gndy/jddy/'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
req = requests.get(url , headers = headers)
req.encoding = 'gbk'#指定编码,否则会乱码
pat = re.compile('<a href="/html/gndy/jddy/(.*?)" class="ulink" title=(.*?)/a>',re.S)#获取电影列表网址
reslist = re.findall(pat, req.text) finalurl = []
for i in range(1,25):
xurl = reslist[i][0]
finalurl.append(base_url + xurl)
return finalurl #返回该页面内所有的视频网页地址 #getdownurl获取页面的视频地址和信息
def getdownurl(url):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
req = requests.get(url , headers = headers)
req.encoding = 'gbk'#指定编码,否则会乱码 pat = re.compile('<a href="ftp(.*?)">ftp',re.S)#获取下载地址
reslist = re.findall(pat, req.text)
furl = 'ftp'+reslist[0] pat2 = re.compile('<!--Content Start-->(.*?)<!--duguPlayList Start-->',re.S)#获取影片信息
reslist2 = re.findall(pat2, req.text)
reslist3 = re.sub('[<p></p>]','',reslist2[0])
fdetail = reslist3.split('◎') return (furl,fdetail) #创建表movies
def createtable(con,cs):
#创建movies表,确定其表结构:
cs.execute('create table if not exists movies (film_addr varchar(1000), cover_pic varchar(1000), name varchar(100) primary key,\
ori_name varchar(100),prod_year varchar(100), prod_country varchar(100), category varchar(100), language varchar(100), \
subtitle varchar(100), release_date varchar(100), score varchar(100), file_format varchar(100), video_size varchar(100), \
file_size varchar(100), film_length varchar(100), director varchar(100), actors varchar(500), profile varchar(2000),capt_pic varchar(1000))')
# 提交事务:
con.commit() #将电影地址和简介插入表中
def inserttable(con,cs,x,y):
try:
cs.execute('insert into movies values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',\
(x,y[0],y[1],y[2],y[3],y[4],y[5],y[6],y[7],y[8],y[9],y[10],y[11],y[12],y[13],y[14],y[15],y[16],y[17]))
except:
pass
finally:
con.commit() if __name__ == "__main__" :
html = "https://www.dygod.net/html/gndy/jddy/index.html"
print('你即将爬取的网站是:https://www.dygod.net/html/gndy/jddy/index.html')
pages = input('请输入需要爬取的页数:')
createtable
p1 = changepage(html,int(pages)) #打开数据库
conn = mysql.connector.connect(user='py', password='Unix_1234', database='py_test')
cursor = conn.cursor()
createtable(conn,cursor)
#插入数据
j = 0
for p1i in p1 :
j = j + 1
print('正在爬取第%d页,网址是 %s ...'%(j,p1i))
p2 = pagelink(p1i)
for p2i in p2 :
p3,p4 = getdownurl(p2i)
if len(p3) == 0 :
pass
else :
inserttable(conn,cursor,p3,p4)
#关闭数据库
cursor.close()
conn.close()
print('所有页面地址爬取完毕!')
用到的知识点和前面比,最重要是多了数据库的操作,下面简要介绍下python如何连接数据库。
一、python中使用mysql需要驱动,常用的有官方的mysql-connect-python,还有mysqldb(Python 2.x)和pymysql(Python 3.x),这几个模块既是驱动,又是工具,可以用来直接操作mysql数据库,也就是说它们是通过在Python中写sql语句来操作的,例如创建user表:
cursor.execute('create table user (id int, name varchar(20))')
#这里的create table语句就是典型的sql语句。
二、还有很多情况下我们用ORM(object relational mapping)即对象映射关系框架,将编程语言的对象模型和数据库的关系模型(RDBMS关系型数据库)进行映射,这样可以直接使用编程语言的对象模型操作数据库,而不是使用sql语言。同样创建user表:
user=Table('user',metadata,
Column('id',Integer),
Column('name', String(20))
)
metadata.create_all()
#这里可以看到根本没有sql语句的影子,这样我们可以专注在Python代码而不是sql代码上了。(注意ORM并不包含驱动,如要使用同样要安装前面提到的驱动)
如有兴趣可以自行学习,这不是本文的重点。为简单起见,文中用的是mysql-connect-python。
正则匹配部分也很简单,因为源网页比较规则,如下网页图和对应的源代码:


直接用◎匹配即可。
程序运行完后,数据都写入movies表中。

比如我想筛选豆瓣评分>7的,

是不是很简单,你GET到了吗?
python爬虫--爬取某网站电影信息并写入mysql数据库的更多相关文章
- python爬虫--爬取某网站电影下载地址
前言:因为自己还是python世界的一名小学生,还有很多路要走,所以本文以目的为向导,达到目的即可,对于那些我自己都没弄懂的原理,不做去做过多解释,以免误人子弟,大家可以网上搜索. 友情提示:本代码用 ...
- Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
- python爬虫爬取腾讯招聘信息 (静态爬虫)
环境: windows7,python3.4 代码:(亲测可正常执行) import requests from bs4 import BeautifulSoup from math import c ...
- 用Python爬虫爬取广州大学教务系统的成绩(内网访问)
用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...
- Python爬虫|爬取喜马拉雅音频
"GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...
- Python爬虫爬取一篇韩寒新浪博客
网上看到大神对Python爬虫爬到非常多实用的信息,认为非常厉害.突然对想学Python爬虫,尽管自己没学过Python.但在网上找了一些资料看了一下,看到爬取韩寒新浪博客的视频.共三集,第一节讲爬取 ...
- 使用Python爬虫爬取网络美女图片
代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...
- python爬虫—爬取英文名以及正则表达式的介绍
python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一. 爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...
- 一个简单的python爬虫,爬取知乎
一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...
随机推荐
- BZOJ 3209: 花神的数论题 [数位DP]
3209: 花神的数论题 题意:求\(1到n\le 10^{15}\)二进制1的个数的乘积,取模1e7+7 二进制最多50位,我们统计每种1的个数的数的个数,快速幂再乘起来就行了 裸数位DP..\(f ...
- iOS学习——布局利器Masonry框架源码深度剖析
iOS开发过程中很大一部分内容就是界面布局和跳转,iOS的布局方式也经历了 显式坐标定位方式 --> autoresizingMask --> iOS 6.0推出的自动布局(Auto La ...
- Bootstrap+Vue.js 练习入门一
一. 效果如下图所示,输入用户名和年龄,点击添加,数据会自动添加到下面的用户信息表内.当没有数据时,用户信息表显示:暂无数据……,当有数据时,显示 删除全部 按钮,这里为了方便快捷,我没有做删除按钮的 ...
- Docker-v17 的层级(layer)概念
html,body { font-size: 12pt } body { font-family: Helvetica, "Hiragino Sans GB", "微软雅 ...
- javascript 利用FileReader和滤镜上传图片预览
FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File或 Blob对象指定要读取的文件或数据. 1.FileReader接口的方法 Fi ...
- java常用工具类[待补充]
生成指定范围指定大小的随机数: String code = String.valueOf((int)(Math.random()*(9999-1000+1))).substring(0,4);
- 【Unity3D技术文档翻译】第1.5篇 本地使用 AssetBundles
上一章:[Unity3D技术文档翻译]第1.4篇 AssetBundle 依赖关系 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Devel ...
- 二、Item Pipeline和Spider-----基于scrapy取校花网的信息
Item Pipeline 当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item. 每个Item Pipeline ...
- 字符串相似度-C#
之前在做一个任务时, 需要比较字符串的相似度, 最终整理了一个出来, 以下: 1 /* 2 * Copyright (c) 2013 Thyiad 3 * Author: Thyiad 4 * Cre ...
- C# 13行代码带你模拟登录QQ空间
最近想做一个QQ空间点赞的小工具,于是晚上下班回来就开始分析PC版的QQ空间,打开Chrome,切换到Network,然后输入账号密码,然后点击登录... 然后,我曹....一堆请求就开始了....搞 ...