1、爬去方式python+selenium

2、工作流程

selenium自动输入,自动爬取,建立文件夹,存入磁力链接到记事本

3、贴上代码

#!/usr/bin/Python
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from bs4 import BeautifulSoup
import os
import urllib2
import time
import random
import re
browser = webdriver.Chrome()
#browser.set_window_position(20, 40)
#browser.set_window_size(1100, 700)
browser.maximize_window() #最大化
#隐式等待
browser.implicitly_wait(10)
browser.get('http://www.dytt8.net/')
browser.find_element_by_xpath('//*[@id="header"]/div/div[3]/div[2]/div[2]/div[1]/div/div[1]/form/div[1]/p[1]/input').clear()
browser.find_element_by_xpath('//*[@id="header"]/div/div[3]/div[2]/div[2]/div[1]/div/div[1]/form/div[1]/p[1]/input').send_keys(u'恐怖')

def close(browser):
# 获取当前窗口句柄(窗口A)
handle = browser.current_window_handle
# 获取当前所有窗口句柄(窗口A、B)
handles = browser.window_handles
# 对窗口进行遍历
for newhandle in handles:
# 筛选新打开的窗口B
if newhandle!=handle:
browser.switch_to_window(newhandle)
# 关闭当前窗口B
browser.close()
browser.switch_to_window(handles[0])

def change(browser):
# 获取当前窗口句柄(窗口A)
handle = browser.current_window_handle
# 获取当前所有窗口句柄(窗口A、B)
handles = browser.window_handles
# 对窗口进行遍历
for newhandle in handles:
# 筛选新打开的窗口B
if newhandle!=handle:
browser.switch_to_window(newhandle)

def back(browser):
# 获取当前窗口句柄(窗口A)
handle = browser.current_window_handle
# 获取当前所有窗口句柄(窗口A、B)
handles = browser.window_handles
# 对窗口进行遍历
for newhandle in handles:
# 筛选新打开的窗口B
if newhandle==handle:
browser.switch_to_window(newhandle)
# 关闭当前窗口B
browser.close()
browser.switch_to_window(handles[0])

def backN(browser):
# 获取当前窗口句柄(窗口A)
handle = browser.current_window_handle
# 获取当前所有窗口句柄(窗口A、B)
handles = browser.window_handles
# 对窗口进行遍历
for newhandle in handles:
# 筛选新打开的窗口B
if newhandle!=handle:
browser.switch_to_window(newhandle)
# 关闭当前窗口B
browser.close()
browser.switch_to_window(handles[1])

close(browser)
browser.find_element_by_xpath('//*[@id="header"]/div/div[3]/div[2]/div[2]/div[1]/div/div[1]/form/div[1]/p[1]/input').clear()
browser.find_element_by_xpath('//*[@id="header"]/div/div[3]/div[2]/div[2]/div[1]/div/div[1]/form/div[1]/p[1]/input').send_keys(u'恐怖')
ele = browser.find_element_by_xpath('//*[@id="header"]/div/div[3]/div[2]/div[2]/div[1]/div/div[1]/form/div[2]/input')
##直接点击不了
#模拟点击事件
ele.send_keys(Keys.ENTER)
##成功跳转到页面
obj = BeautifulSoup(browser.page_source, 'html.parser')

def fun(obj, num):
list = []
list = obj.find('div',{'class':'co_content8'}).find_all('table')
for i, v in enumerate(list):
if i<=9:
href = v.find('a').get('href')
title = v.find('a').text
##去掉特殊的符号
title = re.sub('[\/:*?"<>|]','-',title)
disk_url = 'E:/test/dytt/bt/'+title+''
#开始创建文件夹
if os.path.exists('E:/test/dytt/bt/'+title+''):
print 'This folder already exists!'
else:
os.mkdir(r'E:/test/dytt/bt/'+title+'')
print title
#url = 'http://www.ygdy8.com'+href+''
###打开一个新窗口
js = " window.open('http://www.ygdy8.com"+href+"')"
browser.execute_script(js)
##跳转到新页面
#browser.get(url)
#切换到b窗口
change(browser)
#右键点击那个链接
try:
qqq =browser.find_element_by_xpath('//*[@id="Zoom"]/span/table/tbody/tr/td/a')
ActionChains(browser).context_click(qqq).perform()
hrefs = browser.find_element_by_xpath('//*[@id="Zoom"]/span/table/tbody/tr/td/a').get_attribute('href')
print hrefs
file = open('E:\\test\\dytt\\bt\\'+title+'\\bt.txt', 'w')
file.write(hrefs)
file.close()
except:
print 'WE can try another way!'
try:
qqq =browser.find_element_by_xpath('//*[@id="Zoom"]/span/div[5]/table/tbody/tr/td/a')
ActionChains(browser).context_click(qqq).perform()
hrefs = browser.find_element_by_xpath('//*[@id="Zoom"]/span/div[5]/table/tbody/tr/td/a').get_attribute('href')
print hrefs
file = open('E:\\test\\dytt\\bt\\'+title+'\\bt.txt', 'w')
file.write(hrefs)
file.close()
except:
print 'This is a game!'
back(browser)
#循环完之后
if num==0:
browser.find_element_by_xpath('//*[@id="header"]/div/div[3]/div[3]/div[2]/div[2]/div[2]/ul/table[11]/tbody/tr/td[9]/a').click()
else:
browser.find_element_by_xpath('//*[@id="header"]/div/div[3]/div[3]/div[2]/div[2]/div[2]/ul/table[11]/tbody/tr/td[10]/a').click()
change(browser)
backN(browser)
obj = BeautifulSoup(browser.page_source, 'html.parser')
fun(obj, 1)

def get_html(url):
'''获取html'''
##定义headers
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
headers={"User-Agent":user_agent}
request = urllib2.Request(url, headers=headers)
#request.encoding = 'utf-8'
try:
html = urllib2.urlopen(request).read()
except urllib2.URLError as e:
print url+'Download error:', e.reason
html = None
return html

fun(obj, 0)

python爬去电影天堂恐怖片+游戏的更多相关文章

  1. Python爬取电影天堂指定电视剧或者电影

    1.分析搜索请求 一位高人曾经说过,想爬取数据,要先分析网站 今天我们爬取电影天堂,有好看的美剧我在上面都能找到,算是很全了. 这个网站的广告出奇的多,用过都知道,点一下搜索就会弹出个窗口,伴随着滑稽 ...

  2. 14.python案例:爬取电影天堂中所有电视剧信息

    1.python案例:爬取电影天堂中所有电视剧信息 #!/usr/bin/env python3 # -*- coding: UTF-8 -*- '''======================== ...

  3. python利用requests和threading模块,实现多线程爬取电影天堂最新电影信息。

    利用爬到的数据,基于Django搭建的一个最新电影信息网站: n1celll.xyz  (用的花生壳动态域名解析,服务器在自己的电脑上,纯属自娱自乐哈.) 今天想利用所学知识来爬取电影天堂所有最新电影 ...

  4. java批量爬去电影资源

    摘要 网上有很多个人站来分享电影资源,其实有时候我们自己也想做这个一个电影站来分享资源.但是这个时候就有一个问题,电影的资源应该从哪里来呢?难道要自己一条条手动去从网络上获取,这样无疑是缓慢而又效率低 ...

  5. scrapy框架用CrawlSpider类爬取电影天堂.

    本文使用CrawlSpider方法爬取电影天堂网站内国内电影分类下的所有电影的名称和下载地址 CrawlSpider其实就是Spider的一个子类. CrawlSpider功能更加强大(链接提取器,规 ...

  6. Python多线程爬虫爬取电影天堂资源

    最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. ...

  7. 利用Python爬取电影网站

    #!/usr/bin/env python #coding = utf-8 ''' 本爬虫是用来爬取6V电影网站上的电影资源的一个小脚本程序,爬取到的电影链接会通过网页的形式显示出来 ''' impo ...

  8. python爬取电影网站信息

    一.爬取前提1)本地安装了mysql数据库 5.6版本2)安装了Python 2.7 二.爬取内容 电影名称.电影简介.电影图片.电影下载链接 三.爬取逻辑1)进入电影网列表页, 针对列表的html内 ...

  9. requests+lxml+xpath爬取电影天堂

    1.导入相应的包 import requests from lxml import etree 2.原始ur url="https://www.dytt8.net/html/gndy/dyz ...

随机推荐

  1. mongodb数据库禁止外网访问以及添加账号

    未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬.怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性. 一直未给自己的mongodb数据库设置账号密码 ...

  2. [LeetCode] N皇后问题

    LeetCode上面关于N皇后有两道题目:51 N-Queens:https://leetcode.com/problems/n-queens/description/ 52 N-Queens II: ...

  3. Foundation框架中日期的操作

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSDate *date1=[NSD ...

  4. Numpy数组对象的操作-索引机制、切片和迭代方法

    前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法.使用索引和切片的方法选择元素,还有如何数组的迭代方法. 一.索引机制 1.一维数组 In [1]: a = np.arange ...

  5. LVS+keepalived快速搭建测试环境

    #LVS+keepalived快速搭建测试环境 #LVS+keepalived快速搭建测试环境 #centos6 X64 # LVS 负载均衡模式:DR(直接路由) 192.168.18.31 mas ...

  6. 浅谈canvas绘画王者荣耀--雷达图

    背景: 一日晚上下班的我静静的靠在角落上听着歌,这时"滴!滴!"手机上传来一阵qq消息.原来我人在问王者荣耀的雷达图在页面上如何做出来的,有人回答用canvas绘画.那么问题来了, ...

  7. PHP扩展代码结构详解

    PHP扩展代码结构详解: 这个是继:使用ext_skel和phpize构建php5扩展  内容 (拆分出来) Zend_API:深入_PHP_内核:http://cn2.php.net/manual/ ...

  8. Webpack3.0入门指南

    前言 本文是基于我厂基友的Webpack学习系列(一)初学者使用教程 这篇文章做构建.可能基友的文章是基于Mac环境,我是windows环境,在学习时遇到了很多坑,询问基友,他让我搞个基于window ...

  9. Oracle 每天自动生成AWR报告

    经验丰富的老员工希望能够每天为数据库生成1个AWR报告,以便于后期分析数据库的性能变化,手动生成太麻烦,查了一下资料,发现可以自动生成,过程如下. 数据库环境:11gR2 RAC(双节点) AWR报告 ...

  10. 【tyvj P4879】骰子游戏

    http://www.tyvj.cn/p/4879 首先,投一个骰子,每个数字出现的概率都是一样的.也就是不算小A的话,n个人投出x个骰子需要的次数和点数无关. 计数问题考虑dp,令f(i,j)为前i ...