# coding=utf-8
import scrapy
from scrapy.selector import Selector
class LoginSpidersPyw(scrapy.Spider):
#scrapy crawl LoginSpiders 定义爬虫的名称
name = "LoginSpiders"
#定义允许抓取的域名,如果不是在此列表的域名则放弃抓取
allowed_domains = ['pyw.cn']
#登录网址
LoginUrl="http://v.pyw.cn/login/index"
#登录验证接口
LoginCheckUrl="http://v.pyw.cn/login/check"
#所要爬取的网址
start_urls=["http://v.pyw.cn/Data/accountdetail/1",
"http://v.pyw.cn/Data/accountdetail/2",
"http://v.pyw.cn/Data/accountdetail/3",
"http://v.pyw.cn/Data/accountdetail/4"]
#登录数据:用户名、用户密码、是否记住用户名
formdata = {
"username": "15880xxxxxx",
"password": "a123456",
"remember": "1"
}
#记录当前属于第几笔记录,累计
PageIndex=0
#重写爬虫类:加载登录页面,并回调post_login登录提交数据
def start_requests(self):
return [scrapy.Request(
url=self.LoginUrl,
meta={'cookiejar': 1},
callback=self.post_login)]
#执行提交所要登录的数据信息,
def post_login(self,response):
#验证登录
return [scrapy.FormRequest.from_response(response,
url=self.LoginCheckUrl,
meta={'cookiejar': response.meta['cookiejar']},
formdata=self.formdata,
callback=self.after_login,
method="POST"
)]
#登录成功后调用所要爬取的网址,start_urls中的网址逐一爬取
def after_login(self,response):
for u in self.start_urls:
yield scrapy.Request(url=u,
meta={'cookiejar': response.meta['cookiejar']},
callback=self.parse_details
)
#爬取对应的页面信息,单页信息
def parse_details(self,response):
#选择当前页面的所有信息
sel=Selector(response)
#解析出table中的所有tr
trItems=sel.xpath('//table[@class="table fn-mt-20"]//tr')
#解析tr中的所有数据
for tr in trItems:
self.PageIndex = self.PageIndex + 1
print "===No." + str(self.PageIndex)+"=="
tdItems = tr.xpath('//td/text()')
print tdItems[0].extract().strip()
print tdItems[1].extract().strip()
print tdItems[2].extract().strip()
print tdItems[3].extract().strip()
print tdItems[4].extract().strip()
print tdItems[5].extract().strip()
print tdItems[6].extract().strip()
print tdItems[7].extract().strip()
print tdItems[8].extract().strip()
pass