自动登陆并获得PDF文件下载地址

#!/usr/bin/env python
# -*- encoding: utf- -*-
# Created on -- ::
# Project: pdf_spider import re
from pyspider.libs.base_handler import * class Handler(BaseHandler): global Cookie
Cookie= {"tsclub_bb90_saltkey":"xozcC32l",
"tsclub_bb90_lastvisit":"",
"tsclub_bb90_visitedfid":"",
"tsclub_bb90_ulastactivity":"1428579196%7C0",
"tsclub_bb90_auth":"f9f8KcrDaj3q9aY9OxESFgE2Cz%2BArVk0gZ5jv%2BQohyhctLjeopEZrXU%2FEbsF6pk%2B754%2Fsi5DnB0W%2BmsmLwMvtC3xkWLt",
"tsclub_bb90_lastcheckfeed":"5470207%7C1428579196",
"tsclub_bb90_lip":"122.13.84.73%2C1428579196",
"tsclub_bb90_nofavfid":"",
"pgv_pvi":"",
"pgv_info":"ssi=s5025153920",
"Hm_lvt_ee0d63d2db0dfbf9e0d399bccbd5fce7":"1428461128,1428578830",
"Hm_lpvt_ee0d63d2db0dfbf9e0d399bccbd5fce7":"",
"tsclub_bb90_lastact":"1428581519%09misc.php%09patch",
"tjpctrl":"",
} headers= {
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Encoding":"gzip;deflate;sdch",
"Accept-Language":"zh-CN,zh;en-US;q=0.8",
"Cache-Control":"no-cache",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.4368.102 Safari/537.36",
"Host":"club.topsage.com",
"Pragma":"no-cache",
"Refer":"http://club.topsage.com",
"Connection":"keep-alive",
} crawl_config = {
"headers" : headers,
"timeout" : ,
"cookies" : Cookie
} @every(minutes= * )
def on_start(self):
self.crawl('http://club.topsage.com/', callback=self.index_page) @config(age= * * * )
def index_page(self, response):
for each in response.doc('a[href^="http"]').items():
if(re.match("http://club\.topsage\.com/forum-.+\.html", each.attr.href, re.U)):
self.crawl(each.attr.href, callback=self.forum_page)
elif re.match("http://club\.topsage\.com/thread-.+\.html", each.attr.href, re.U):
self.crawl(each.attr.href, callback=self.detail_page) @config(age= * * * , priority=)
def forum_page(self, response):
response_url=response.url
#print('forum_page >> response url is ' + response_url) for each in response.doc('a[href^="http://club.topsage.com"]').items():
#if each.attr.href!=response.url:
#detail page
if re.match("http://club\.topsage\.com/thread-.+\.html", each.attr.href, re.U):
self.crawl(each.attr.href, callback=self.detail_page)
#forum forum page
elif re.match("http://club\.topsage\.com/forum-.+\.html", each.attr.href, re.U):
self.crawl(each.attr.href, callback=self.forum_page) #next page
for each in response.doc('html > body > div > div > div > div > a').items():
self.crawl(each.attr.href, callback=self.forum_page) @config(priority=)
def detail_page(self, response):
response_url=response.url
print('detail_page >> response url is ' + response_url) for each in response.doc('table tr > td > a').items():
if(self.is_url_matched(each.attr.href)):
print('attachment url is ' + each.attr.href)
return {
"download_url":each.attr.href,
"file_name":each.text(),
} def is_url_matched(self, url):
if(re.match('^(http|ftp|https)://.+\.(zip|rar|tar|pdf|doc|docx|excel|ppt|pptx)$', url, re.U)):
return True
if(re.match('^http://club\.topsage\.com/forum\.php\?mod=attachment.+', url, re.U)):
return True
return False

pyspider示例代码七:自动登陆并获得PDF文件下载地址的更多相关文章

  1. pyspider示例代码:解析JSON数据

    pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下比较经典的示例进行简单讲解,希望对新手有一些帮助. 示例说明: py ...

  2. pyspider示例代码三:用PyQuery解析页面数据

    本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一些 ...

  3. pyspider示例代码二:解析JSON数据

    本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下 ...

  4. pyspider示例代码一:利用phantomjs解决js问题

    本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下 ...

  5. pyspider示例代码五:实现自动翻页功能

    实现自动翻页功能 示例代码一 #!/usr/bin/env python # -*- encoding: utf- -*- # Created on -- :: # Project: v2ex fro ...

  6. pyspider示例代码六:传递参数

    传递参数 示例一 #!/usr/bin/env python # -*- encoding: utf- -*- # vim: ts= sts= ff=unix fenc=utf8: # Created ...

  7. pyspider示例代码四:搜索引擎爬取

    搜索引擎爬取 #!/usr/bin/env python # -*- encoding: utf- -*- # Created on -- :: # Project: __git_lab_fix fr ...

  8. QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码(转)

    OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. QQ登录OAuth2 ...

  9. QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码

    OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. QQ登录OAuth2 ...

随机推荐

  1. UI5-文档-3-Hello World!

    通过本教程,您将了解如何在单个HTML页面上通过几个步骤创建一个简单的第一个应用程序. 我们创建了一个带有两个页面和导航按钮的应用程序来在页面之间导航. 预览 Simple "Hello W ...

  2. 在eclipse中创建maven项目,亲测有效,详细步骤

    一.想要使用maven,首先要配置本地maven的环境 1.在http://maven.apache.org/download.cgi中去下载maven 2. 3.下载完毕后将压缩包解压到自己记住的位 ...

  3. python之函数的作用域

    name = "wangyue" def test1(): name= "in the test1" def bar(): name = "zhaoz ...

  4. Hibernate 的update语句性能详解

    Hibernate 中如果直接使用 Session.update(Object o); 会把这个表中的所有字段更新一遍. 比如: view plaincopy to clipboardprint? p ...

  5. spring 中的断言的作用

    org.springframework.util.AssertAssert翻译为中文为"断言".用过JUNIT的应该都知道这个概念了.就是断定某一个实际的值就为自己预期想得到的,如 ...

  6. RESTORE 无法处理数据库 'Students',因为它正由此会话使用。建议在执行此操作时使用 master 数据库。

    恢复数据库是总弹出报错对话框如下:RESTORE 无法处理数据库 'Students',因为它正由此会话使用.建议在执行此操作时使用 master 数据库.RESTORE DATABASE 正在异常终 ...

  7. 吴裕雄 python神经网络 水果图片识别(1)

    import osimport numpy as npimport matplotlib.pyplot as pltfrom skimage import color,data,transform,i ...

  8. 协同过滤 spark scala

    1 http://www.cnblogs.com/charlesblc/p/6165201.html [转载]协同过滤 & Spark机器学习实战 2 基于Spark构建推荐引擎之一:基于物品 ...

  9. tensorflow生成随机数的操作 tf.random_normal & tf.random_uniform & tf.truncated_normal & tf.random_shuffle

    tf.random_normal 从正态分布输出随机值. random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name ...

  10. spring 每个jar的作用

    spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2. ...