python+request爬取电影网站
使用python+request进行电影网站的爬取今天我们爬取的网站是http://www.6vhao.com项目链接GtiHub实现功能:对不同分类下的电影进行爬取只留下百度网盘的下载链接正则表达式的使用代码块 主要代码pythonimport requestsimport lxml.html as htmlimport re#将不同的电影分类放入列表...
·
使用python+request进行电影网站的爬取
今天我们爬取的网站是http://www.6vhao.com
项目链接GtiHub
实现功能:
- 对不同分类下的电影进行爬取
- 只留下百度网盘的下载链接
- 正则表达式的使用
代码块 主要代码
python
import requests
import lxml.html as html
import re
#将不同的电影分类放入列表中
list_dianyinleibei = ['xiju','dongzuo','aiqing','kehuan','qihuan','huanxiang','kongbu','zhanzheng','maoxian','juqingpian','zhuanji','lishi']
for ppaa in list_dianyinleibei:
for pa in range(1,10):#爬取每个分类下的前10页数据
# url = 'http://www.6vhao.com/s/xiju/'
if pa == 1:
url = 'http://www.6vhao.com/s/%s/'%ppaa
else:
url = 'http://www.6vhao.com/s/%s/index_%d.html'%(ppaa,pa)
r = requests.get(url)
# 编码问题,不执行这句话会乱码
r.encoding = 'gb2312'
tree = html.fromstring(r.text)
"""
一级页面的标题,属性,二级链接
"""
title_list = tree.xpath('//*[@id="main"]/div[1]/div/ul/li/a//text()')
faburiqi_list = tree.xpath('//*[@id="main"]/div[1]/div/ul/li/span//text()')
erji_url = tree.xpath('//*[@id="main"]/div[1]/div/ul/li/a/@href')
page_list(erji_url)#调用了自己写的函数,
函数代码块page_list
def page_list(erji_url):
for i in range(len(erji_url)):
erjiwenben = geturl(erji_url[i]) #获取二级文本,也是自定义函数geturl()
#get_tongyongziduan()自定义函数
daoyan = get_tongyongziduan(u'导 *演(.*)',erjiwenben) #导演抓取
dianyinpinfen = get_tongyongziduan(u'豆瓣评 *分(.*)', erjiwenben) #电影评分
if not dianyinpinfen:
dianyinpinfen = u'暂无评分'
pianchang = get_tongyongziduan(u'片 *长(.*)', erjiwenben) #抓取影片播放时间
shangyinriqi = get_tongyongziduan(u'上映日期(.*)', erjiwenben) #抓取上映日期
yuyan = get_tongyongziduan(u'语 *言(.*)', erjiwenben) #抓取电影语言字段
zimu = get_tongyongziduan(u'字 *幕(.*)', erjiwenben) #抓取字幕字段
xiazaidizhi = get_tongyongziduan(u'网盘链接[::](http://pan.baidu.com.+?) ?密码[::]', erjiwenben) #抓取网盘下载链接
#在通用函数中不小将http中的冒号:去掉了,通过这样补回来
xiazaidizhi = re.sub('http','http:',xiazaidizhi)
tiquma = get_tongyongziduan(u'网盘链接[::]http://pan.baidu.com.+? ?密码[::](.*)', erjiwenben) # 抓取网盘提取密码
dianyinleibie = get_tongyongziduan(u'类 *[别型](.*)', erjiwenben)
print '电影类型',dianyinleibie
title = title_list[i]
title = re.sub(u'.*《',u'《',title)
title = re.sub(u'》.*',u'》',title)#正则re.sub()替换
faburiqi = faburiqi_list[i]
myurl = erji_url[i]
#对抓取到的数据进行输出,
print daoyan
print dianyinpinfen
print pianchang
print shangyinriqi
print yuyan
print zimu
print xiazaidizhi
print tiquma
print dianyinleibie
代码块geturl,get_tongyongziduan
上面代码中这两个函数被调用:
"""
处理二级url函数,返回一个页面文本
"""
def geturl(url):
r = requests.get(url)
r.encoding = 'gb2312'
tree = html.fromstring(r.text)
wenben = tree.xpath('//text()')
wenben = "".join(wenben)
# print wenben
return wenben
"""
设计通用字段抓取函数 str1 填写相关的正则表达式,search_wenben 填写相关的查找文本
"""
def get_tongyongziduan(str1, search_wenben):
tongyong_group = re.search(str1, search_wenben)
if tongyong_group:
tongyong = tongyong_group.group(1).replace(':','').replace(u':','').strip()
else:
tongyong = ""
return tongyong
在这样基本完成了对电影网站的下载,注意一点,被调用的自定义函数要写在主代码块的前面哦
我在GitHub上面上传了我的爬取项目,里面还实现了对抓取的数据导入到mysql数据库中。
刚刚开始写博客,写的不好的地方还望大家指出。o(∩∩)o…
更多推荐
已为社区贡献1条内容
所有评论(0)