scrapy框架下爬取老司机网站获取磁力链接
---恢复内容开始---
任务分析:
找到一个老司机网站,抓取这个网站上所有磁力链接保存到本地。
这次的任务是一个多级页面的爬取处理。
知识点分析:
scrapy框架,Request方法,yield方法,xpath()
操作步骤:
1、找到一个确实可以爬取的老司机网站(这步最难。。。
2、利用xpath()抓取主页面所有title下的名字和url,再把相对url组合成绝对url传给下一个函数进行抓取链接的工作。
部分代码:
基于python3X
(我不会透露自己的老司机网站的..
1.创建project
scrapy startproject jav
2.编写items
import scrapy class JavItem(scrapy.Item): name=scrapy.Field() #资源的名字 urls=scrapy.Field() #连接 lianjie = scrapy.Field()#磁力链接
3.修改settings
虽然大部分老司机网站没有反爬机制,但是照顾到其他老司机的生理需求,还是做一个有素质的爬虫吧!
DOWNLOAD_DELAY = 5
在seetings.py中把DOWNLOAD_DELAY参数改为5(默认是3)
4.spider的编写
大概的框架:
import scrapy import requests from scrapy.http import Request from jav.items import JavItem class JavSpider(scrapy.Spider): name = "jav" allowed_domains = '***.com' def start_requests(self): for i in range(1,1084): #爬取所有主页面 if i == 1: url = 'http://www.****.com' else: url= 'http://www.***.com/'+str(i)+'.html' yield Request(url,callback=self.parse_one) def parse_one(self,response): #解析主页面,获取相对链接和资源的名字 items = [] sites =response.xpath('//table') for each in sites: item =JavItem() item['name']= each.xpath('//tr/td/a/text()').extract() item['urls']= each.xpath('//tr/td[1]/a/@href').extract() items.append(item) for ie in item['urls']: #相对链接拼接成绝对链接传给parse_two访问 url = 'http://www.**.com' + ie yield Request(url,callback=self.parse_two,dont_filter=True) #yield方法,dont_filter置成true是因为下边会有爬出allowed_domains def parse_two(self,response): item =JavItem() item['lianjie'] = response.xpath('/html/body/div[5]/table[2]/tbody/tr[2]/td/ul/li/a/text()').extract() yield item #这里就是我们要的链接啦!我用的是火狐浏览器的firebug
5.run spider
cd desktop/jav #切换到目录,小细节 scrapy crawl jav -o jav.json -t json #用json的格式把所有链接保存到本地jav.json下
实验结果:
每一页有三十来个,一共有1000+页,现在还在跑,不过目前打开文件点击链接就可以直接唤起播放器开始播放(逃...
作为一个有素质的爬虫这点等待是值得的。现在爬了1700多条了,估计到晚上大概应该差不多就好了...
送福利了,车牌号拿好
知识就是力量啊....
注意身体:)
---恢复内容结束---