#!/usr/bin/env python

#encoding:utf-8

import requests

from bs4 import BeautifulSoup

import urllib

import sys

import re

# 解决编码错误问题

reload(sys)

sys.setdefaultencoding('utf8')

def getHex(words):

mywords = words.split("%")[1:]

result = ""

for i in mywords:

result += chr(int(i, 16))

return result

'''

电影天堂模块

'''

# config-start

maxPage = 5

modelName = "电影天堂"

url = "http://www.dy2018.com"

keyword = sys.argv[1]

pageSize = 20

keywordURLencode = urllib.quote(keyword.decode(sys.stdin.encoding).encode('GBK')) # 将查询关键字进行URL编码

searchUrl = "http://www.dy2018.com/e/search/index.php"

postData = {

'classid':'0',

'show':'title,smalltext',

'tempid':'1',

'keyboard': getHex(keywordURLencode),

'Submit':chr(0xC1) + chr(0xA2) + chr(0xBC) + chr(0xB4) + chr(0xCB) + chr(0xD1) + chr(0xCB) + chr(0xF7)

}

headers = {

'Host' : 'www.dy2018.com',

'Cache-Control' : 'max-age=0',

'Origin' : 'http://www.dy2018.com',

'Upgrade-Insecure-Requests' : '1',

'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36',

'Content-Type' : 'application/x-www-form-urlencoded',

'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'Referer' : 'http://www.dy2018.com/index.html',

'Accept-Encoding' : 'gzip, deflate',

'Accept-Language' : 'zh-CN,zh;q=0.8,en;q=0.6',

'Connection' : 'close'

}

# config-end

def getContent(url):

global headers

response = requests.get(url, headers=headers)

response.encoding = 'gb2312' # 设置相应体的字符集

return response.text

def getResultNumber(soup):

a = soup.find("a", title="总数")

totalResult = a.find("b").string

return int(totalResult)

def getSoupByPostData(url,postData):

global headers

content = requests.post(url, data=postData, headers=headers).text.decode("UTF-8")

soup = BeautifulSoup(content, "html.parser")

return soup

def getPageNumber(resultNumber):

global pageSize

return int((resultNumber / pageSize)) + 1

def getPageID(soup):

div = soup.find('div', class_="x", style="text-align: center;font-size: 14px;margin: 5px 0;")

firstPage = div.findAll("a")[1]

firstPageStr = firstPage['href']

pageID = firstPageStr.split("-")[1]

return pageID

def getResultDic(soup):

results = []

tables = soup.findAll("table", width="100%", border="0", cellspacing="0", cellpadding="0", class_="tbspan", style="margin-top:6px")

for table in tables:

# 获取结果标题

title = str(table.find("a")["title"])

# 获取结果描述

describe = table.find("td", colspan="2", style="padding-left:3px").string

# 获取页面详细地址

src = url + table.find("a")['href']

# 获取条目时间和点击量

temp = table.find("font", color="#8F8C89").string

time = temp.split("\n")[0].split(":")[1][0:-1] # 注意这里是中文冒号

click = temp.split("\n")[1].split(":")[1] # 注意这里是中文冒号

# 获取下载地址

downloadLinks = []

newContent = getContent(src)

newSoup = BeautifulSoup(newContent, "html.parser")

tbodys = newSoup.findAll("tbody")

for tbody in tbodys:

downloadLinks.append(tbody.find("a")['href'])

result = {

"title":title,

"describe":describe,

'time':time,

'click':click,

"downloadLink":downloadLinks

}

results.append(result)

print "单条数据获取成功 !"

return results

soup = getSoupByPostData(searchUrl, postData)

resultNumber = getResultNumber(soup)

pageNumber = getPageNumber(resultNumber)

pageID = getPageID(soup)

print "查询结果数 :", resultNumber

print "总页面数量 :", pageNumber

print "正在获取第 1 页的结果"

results = getResultDic(soup)

print "该页所有结果获取成功 !"

if pageNumber > maxPage:

for page in range(maxPage):

print "正在获取第",(page + 1),"页的结果"

thisUrl = "http://www.dy2018.com/e/search/result/searchid-" + pageID + "-page-" + str(page) + ".html"

tempContent = getContent(thisUrl)

tempSoup = BeautifulSoup(tempContent, "html.parser")

results += getResultDic(soup)

SIGN = input("已经获取了" + maxPage + "个页面 , 是否需要继续获取 ? [1/0]")

if SIGN == 1:

for page in range(maxPage, pageNumber):

print "正在获取第",(page + 1),"页的结果"

thisUrl = "http://www.dy2018.com/e/search/result/searchid-" + pageID + "-page-" + str(page) + ".html"

tempContent = getContent(thisUrl)

tempSoup = BeautifulSoup(tempContent, "html.parser")

results += getResultDic(soup)

else:

for page in range(pageNumber):

print "正在获取第",(page + 1),"页的结果"

thisUrl = "http://www.dy2018.com/e/search/result/searchid-" + pageID + "-page-" + str(page) + ".html"

tempContent = getContent(thisUrl)

tempSoup = BeautifulSoup(tempContent, "html.parser")

results += getResultDic(soup)

print "数据获取完毕 ! "

# 格式化显示数据 :

for result in results:

file = open(modelName + "-" + keyword + ".txt","a+")

file.write("---------------------------\n")

file.write("标题 : " + result['title'] + "\n")

file.write("描述 : \n\t" + result['describe'] + "\n")

file.write("时间 : " + result['time'] + "\n")

file.write("点击量 : " + result['click'] + "\n")

file.write("下载地址 : " + "\n")

for downloadlink in result['downloadLink']:

file.write("\t" + downloadlink + "\n")

file.write("\n")

file.close()

python一键电影搜索与下载_[懒人福利]用Python进行[天堂电影]下载资源的搜索相关推荐

  1. python写迷你小游戏下载_狼人杀?用Python自己写个迷你版狼人杀游戏,自己的游戏自己做主...

    狼人杀估计很多小伙伴都玩过,是一个非常有趣的游戏!以前公司团建的时候,经常一堆人围一桌玩,心理素质比较高的同学会玩的比较好,有的时候一玩会从下午玩到晚上,真的非常怀念那段时光,今天我们用Python写 ...

  2. Python爬取网站用户手机号_设计师的福利,python爬取素材网站

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本环境配置 python 3.6 pycharm requests parsel 相关模块 ...

  3. 我的世界java版怎么加整合包_我的世界1.9MOD简单整合下载 功能性懒人包

    我的世界1.9已经有不少mod推出了,今天给大家带来的这个1.9mod简单整合是一个整合了forge和目前推出的一些简单功能性mod,并且玩家们可以在这个基础上自主添加新mod的特殊整合,这个整合应该 ...

  4. python面试题百度云下载_【百度Python面试题及回答技巧有哪些?】-看准网

    百度,全球最大的中文搜索引擎.最大的中文网站.2000年1月创立于北京中关村. 1999年底,身在美国硅谷的李彦宏看到了中国互联网及中文搜索引擎服务的巨大发展潜力,抱着技术改变世界的梦想,他毅然辞掉硅 ...

  5. 420集的python教程下载_清华学霸录制 420集python视频教程给你拿去学!两个月让你变大神...

    Python已经成为一种再主流不过的编程语言了.它天生丽质,易于读写,非常实用,从而赢得广泛的群众基础,被誉为"宇宙最好的编程语言",被无数程序员热烈追捧. 随着时代的发展越来越快 ...

  6. 一款懒人必备的Python爬虫神器

    前言 今天把最近的一个应用做好了,测试了一下运行没有问题,剩下的就是检验一下结果如何.从光谱到Lab值通常使用matlab中的roo2lab(),不过经过我最近的测试发现转换的结果并不理想,而且这个转 ...

  7. 安卓系统dicom阅读器_懒人追番利器,彩屏阅读器把动漫搬到手中

    慢慢发现自己开始长大,看到身边的小朋友熬夜吃鸡打王者的样子,不由得想起年少时追番的日子.那些总也追不完的漫画,就像是总也上不完的课一样,在无数个回家的路上慢慢远去. 直到后来不再关注人物的历程,才发现 ...

  8. autohotkey实例+懒人包_懒人福音——GitHub 热点速览 Vol.42

    作者:HelloGitHub-小鱼干 懒人福音是什么?就是省时省事,正如 Waypoint 一样,你不需要在多个平台构建代码即可部署发布应用,它允许你将应用程序构建.部署和发布生命周期定义为代码.Bi ...

  9. python能干啥是什么意思_这年头不懂点Python都不好意思说是码农 神奇的Python都能干啥...

    原标题:这年头不懂点Python都不好意思说是码农 神奇的Python都能干啥 如果你在周末.有WIFI的房间里不知道做什么,不如学下Python吧.有了它,你可以什么都不需要! 基础需求篇 温饱与空 ...

最新文章

  1. PHP函数之无极分类
  2. 打开WORD2016提示 您正在试图打开带有宏的 。。。。 解决办法
  3. 蒙特卡罗(Monte Carlo)方法
  4. pythonsuper用法_python super函数使用方法详解
  5. 2020-10-25(极客pyc题目)
  6. Java千百问_03基本的语法(005)_二进制是如何做位运算的
  7. 用VIPER构建iOS应用
  8. enter opportunity line item detail page AG3
  9. C#基础:理解装箱与拆箱
  10. 杀掉僵尸 MapReduce 任务的两种方式
  11. 支付宝服务商子商户_怎么成为支付宝刷脸支付服务商?
  12. Opencv之读取yuv420P
  13. 【图像提取】基于matlab DNA编解码多尺度形态学提取眼前节组织【含Matlab源码 1191期】
  14. 最难学的十大编程语言,Java排第三,C++排第二,第一名竟是它
  15. win10专业版/企业版怎样永久激活并查看激活期限
  16. 【大数据】分布式机器学习平台
  17. Codeforces 450A. Jzzhu and Children
  18. C语言编程练习---2021山东理工大学ACM 实验一J---X题解
  19. Unity3D中玩家的移动方式,三大类型,八种方式
  20. Web测试中定位bug方法

热门文章

  1. 树莓派Zero W发布;亚马逊 AWS S3 服务出现故障 | IoT黑板报
  2. shell小技巧(五十)打印100以内被3整除的数
  3. 遥感解译实验样本标注规范
  4. .Net core--- IOC
  5. LIMS系统平台在第三方检测实验室中的意义
  6. numpy学习笔记之随机采样函数
  7. Markem imaje马肯依玛士喷码机维修9450E打码机维修
  8. 用Python读红楼梦之——二、词云美化
  9. nyoj 125 盗梦空间
  10. 缓解职场压力和心理疲劳