python通过urllib2爬网页上种子下载示例
通过urllib2、re模块抓种子
思路
1.用程序登录论坛(如果需要登录才能访问的版块)
2.访问指定版块
3.遍历帖子(先取指定页,再遍历页面所有帖子的url)
4.循环访问所有帖子url,从帖子页面代码中取种子下载地址(通过正则表达式或第三方页面解析库)
5.访问种子页面下载种子
importurllib
importurllib2
importcookielib
importre
importsys
importos
#siteiswebsiteaddress|fidispartid
site="http://xxx.yyy.zzz/"
source="thread0806.php?fid=x&search=&page="
btSave="./clyzwm/"
ifos.path.isdir(btSave):
printbtSave+"existing"
else:
os.mkdir(btSave)
logfile="./clyzwm/down.log"
errorfile="./clyzwm/error.log"
sucfile="./clyzwm/sucess.log"
headers={"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_9_1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/32.0.1700.77Safari/537.36",
"Referer":"http://xxx.yyy.zzz/"}
defbtDown(url,dirPath):
logger(logfile,"downloadfile:"+url)
try:
#pageCode=urllib2.urlopen(url).read()
#printpageCode
btStep1=re.findall("http://[\w]+\.[\w]+\.[\w]{0,4}/[\w]{2,6}\.php\?[\w]{2,6}=([\w]+)",url,re.I)
#printbtStep1
iflen(btStep1)>0:
ref=btStep1[0]
downsite=""
downData={}
iflen(ref)>20:
downsite=re.findall("http://www.[\w]+\.[\w]+/",url)[0]
downsite=downsite+"download.php"
reff=re.findall("input\stype=\"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"btsite-"+ downsite+"\ndownData:"
#printdownData
downData=urllib.urlencode(downData)
downReq=urllib2.Request(downsite,downData)
downReq.add_header("User-Agent","Mozilla/5.0(Macintosh;IntelMacOSX10_9_1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/32.0.1700.77Safari/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")
excepturllib2.URLError,e:
printe.reason
deflogger(logfile,msg):
printmsg
fw=open(logfile,"a")
fw.write(msg)
fw.close()
foriinrange(1,1000):
logger(logfile,"\n\n\n@page"+str(i)+"...")
part=site+source+str(i)
content=urllib2.urlopen(part).read()
content=content.decode("gbk").encode("utf8")
#printcontent
pages=re.findall("<a\s+href=\"(htm_data/[\d]+/[\d]+/[\d]+\.html).*?<\/a>",content,re.I)
#printpages
forpageinpages:
page=site+page;
#logger(logfile,"\n#visiting"+page+"...")
pageCode=urllib2.urlopen(page).read()
#printpageCode
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)
iflen(zzJump)>0:
zzJump=zzJump[0]
#print"-jumppage-"+zzJump
pageCode=urllib2.urlopen(page).read()
zzPage=re.findall("http://[\w]+\.[\w]+\.[\w]+/link[\w]?\.php\?[\w]{2,6}=[\w]+",pageCode)
iflen(zzPage)>0:
zzPage=zzPage[0]
logger(logfile,"\n-zhongzipage-"+zzPage)
btDown(zzPage,btSave)
else:
logger(logfile,"\n.NOTFOUND.")
else:
logger(logfile,"\n...NOTFOUND...")
zzPage=re.findall("http://[\w]+\.[\w]+\.[\w]+/link[\w]?\.php\?ref=[\w]+",pageCode)
相关文章
- pycharm配置python运行环境_C中调用Python
- python 生成数组_Python创建数组「建议收藏」
- 使用python的Django库开发一个简单的数据可视化网站(四)- 使用pyecharts进行数据可视化
- 浙江新增python编程_9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段…「建议收藏」
- python——正则表达式(re模块)详解
- python爬虫—–Python访问http的几种方式「建议收藏」
- Python下载小说 -XXOO[通俗易懂]
- Python里divmod_python yield函数
- python表情代码_Python实现表情包的代码实例[通俗易懂]
- random生成随机整数 python_python中的random函数
- python网页爬虫代码_python md5加密解密
- Karton:基于Python、Redis和MinIO实现的分布式恶意软件处理框架
- python绘制条形柱状图_Python柱状图
- 上手python之变量和字符串
- python自动化测试—Python自动化框架及工具
- 廖雪峰的 Python 教程_python基础教程廖雪pdf
- 数据结构小记【Python/C++版】——树与二叉树篇
- Python变量:变量定义作用类型及特征
- Python线程的创建、执行和管理以及注意事项
- python多线程不断刷新网页的代码详解编程语言
- Python正则表达式详解
- Python操作Redis实现数据持久化(python操作redis)
- Linux查看Python安装路径的方法(linux查看python安装路径)
- Python实现Oracle数据库连接(python连接oracle数据库)
- Linux下Python编程:从入门到精通(linux下python编程)
- python连接mysql调用存储过程示例