python通过urllib2爬网页上种子下载示例_python教程-查字典教程网
python通过urllib2爬网页上种子下载示例
python通过urllib2爬网页上种子下载示例
发布时间:2016-12-28 来源:查字典编辑
摘要:通过urllib2、re模块抓种子思路1.用程序登录论坛(如果需要登录才能访问的版块)2.访问指定版块3.遍历帖子(先取指定页,再遍历页面所...

通过urllib2、re模块抓种子

思路

1.用程序登录论坛(如果需要登录才能访问的版块)

2.访问指定版块

3.遍历帖子(先取指定页,再遍历页面所有帖子的url)

4.循环访问所有帖子url,从帖子页面代码中取种子下载地址(通过正则表达式或第三方页面解析库)

5.访问种子页面下载种子

复制代码 代码如下:

import urllib

import urllib2

import cookielib

import re

import sys

import os

# site is website address | fid is part id

site = "http://xxx.yyy.zzz/"

source = "thread0806.php?fid=x&search=&page="

btSave = "./clyzwm/"

if os.path.isdir(btSave):

print btSave + " existing"

else:

os.mkdir(btSave)

logfile = "./clyzwm/down.log"

errorfile = "./clyzwm/error.log"

sucfile = "./clyzwm/sucess.log"

headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36',

'Referer' : 'http://xxx.yyy.zzz/'}

def btDown(url, dirPath):

logger(logfile, "download file : " + url)

try:

#pageCode = urllib2.urlopen(url).read()

#print pageCode

btStep1 = re.findall('http://[w]+.[w]+.[w]{0,4}/[w]{2,6}.php?[w]{2,6}=([w]+)', url, re.I)

#print btStep1

if len(btStep1)>0:

ref = btStep1[0]

downsite = ""

downData = {}

if len(ref)>20:

downsite = re.findall('http://www.[w]+.[w]+/', url)[0]

downsite = downsite + "download.php"

reff = re.findall('inputstype="hidden"sname="reff"svalue="([w=]+)"', urllib2.urlopen(url).read(), re.I)[0]

downData = {'ref': ref, 'reff':reff, 'submit':'download'}

else:

downsite = "http://www.downhh.com/download.php"

downData = {'ref': ref, 'rulesubmit':'download'}

#print "bt site - " + downsite + "n downData:"

#print downData

downData = urllib.urlencode(downData)

downReq = urllib2.Request(downsite, downData)

downReq.add_header('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36')

downPost = urllib2.urlopen(downReq)

stream = downPost.read(-1)

if (len(stream) > 1000):

downPost.close()

name = btStep1[0]+ ".torrent"

fw = open(dirPath + name, 'w')

fw.write(stream)

fw.close()

logger(sucfile, url+"n")

else:

logger(errorfile, url+"n")

except urllib2.URLError, e:

print e.reason

def logger(logfile, msg):

print msg

fw = open(logfile, 'a')

fw.write(msg)

fw.close()

for i in range(1, 1000):

logger(logfile, "nnn@ page " + str(i) + " ...")

part = site + source + str(i)

content = urllib2.urlopen(part).read()

content = content.decode('gbk').encode('utf8')

#print content

pages = re.findall('<as+href="(htm_data/[d]+/[d]+/[d]+.html).*?</a>', content,re.I)

#print pages

for page in pages:

page = site + page;

#logger(logfile, "n# visiting " + page + " ...")

pageCode = urllib2.urlopen(page).read()

#print pageCode

zzJump = re.findall('http://www.viidii.info/?http://[w]+/[w]+?[w]{2,6}=[w]+' ,pageCode)

#zzJump = re.findall('http://www.viidii.info/?http://[w/?=]*', pageCode)

if len(zzJump) > 0:

zzJump = zzJump[0]

#print "- jump page - " + zzJump

pageCode = urllib2.urlopen(page).read()

zzPage = re.findall('http://[w]+.[w]+.[w]+/link[w]?.php?[w]{2,6}=[w]+' ,pageCode)

if len(zzPage) > 0:

zzPage = zzPage[0]

logger(logfile, "n- zhongzi page -" + zzPage)

btDown(zzPage, btSave)

else:

logger(logfile, "n. NOT FOUND .")

else:

logger(logfile, "n... NOT FOUND ...")

zzPage = re.findall('http://[w]+.[w]+.[w]+/link[w]?.php?ref=[w]+' ,pageCode)

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新python学习
    热门python学习
    脚本专栏子分类