爬点东西 -Scrapy

今天是小年,团聚的日子,想想这一年中发生过大大小小的事,十分感慨。

言归正传: 接触python ,想着可不可以自己爬它点数据,目的是能够过滤掉他这些令人头痛的广告,当然也可以顺带熟悉一下python 的scrapy框架 那就开始吧

scrapy startproject btxxxx

scrapy genspider -t crawl btxxxx xxx.info

spider的代码

 
 # -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
import urllib
from xxx.items import XxxxItem
import sys reload(sys) sys.setdefaultencoding('utf8') class BtxxxxSpider(CrawlSpider):
name = 'btxxxx'
allowed_domains = ['btxxxx.info']
def __init__(self, key_word='', *args, **kwargs):
super(BtxxxxSpider, self).__init__(*args, **kwargs)
self.key_words = key_word
quote_str = urllib.quote(self.key_words)
# 网址就不搞出来啦
zero_url = 'http://www.xxxx.info/search/' + quote_str + '.html'
self.start_urls = [zero_url] rules = (
Rule(LinkExtractor(allow=r'\/search\/b-[\s\S]*\.html'),callback='root_url', follow=True),
Rule( LinkExtractor(
allow=r'\/search\/b-[a-z,A-Z,0-9]+\/[0-9]+-[0-9]+\.html'), callback='content_url', follow=True
),
Rule(LinkExtractor(allow=r'\/wiki\/.*\.html'), callback='parse_item', follow=False)
) def root_url(self, response):
pass def content_url(self, response):
pass def parse_item(self, response):
i = BtxxxxItem()
script_txt = response.xpath('//*[@id="wall"]/h2/script/text()').extract()
if len(script_txt) !=0:
url_str = script_txt[0].replace('document.write(decodeURIComponent(', '').replace('));', '').replace('"','')
link_name = urllib.unquote(str(url_str.replace('+', '')))
i["file_name"] = link_name
print "*" * 10
#print link_name
print "*" * 10
file_nodes = response.xpath('//*[@id="wall"]/div/table/tr[last()]/td/text()').extract()
print "#" * 10
print file_nodes
print "#" * 10
if len(file_nodes) > 0 :
i["file_type"] = file_nodes[0].replace('\n', '')
i["file_createtime"] = file_nodes[1].replace('\n', '')
i["file_hot"] = file_nodes[2].replace('\n', '')
i["file_size"] = file_nodes[3].replace('\n', '')
i["file_url"] = response.url
file_link = response.xpath('//*[@id="wall"]/div[1]/div[1]/div[2]/a/@href').extract()
if len(file_link) > 0:
i["file_link"] = file_link[0]
yield i

items的代码

 class BtxxxxItem(scrapy.Item):
file_type = scrapy.Field()
file_createtime = scrapy.Field()
file_hot = scrapy.Field()
file_size = scrapy.Field()
file_count = scrapy.Field()
file_link = scrapy.Field()
file_name = scrapy.Field()
file_url = scrapy.Field()

settings 中添加

FEED_EXPORT_ENCODING = 'utf-8'

并启用  DEFAULT_REQUEST_HEADERS

执行scrapy  (设置要检索的关键字和输出的文件)

scrapy crawl btxxxx  -a key_word=xx -o xx.json

简单的爬数据而已,包含网址信息的代码我都已经在文章中删掉,只做学习使用

转载请标明出自 原文地址

step_by_step_用python爬点磁力链接的更多相关文章

  1. DHT协议网络爬虫磁力链接和BT种子搜索引擎

    系统功能和用到的技术. 系统包括几个独立的部分: 使用 Python 的 Scrapy 框架开发的网络爬虫,用来爬取磁力链接和种子: 使用 PHP CI 框架开发的简易网站: 搜索引擎目前直接使用的 ...

  2. 实战Python实现BT种子转化为磁力链接

    经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些. 将BT种子转换为占用空间更小,分享更方便的磁 ...

  3. python爬取博客圆首页文章链接+标题

    新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了. 使用python 爬取博客园首页文章链接和标题. 首先当然是环境了,爬虫在window10系统下,python ...

  4. 使用Python实现搜索任意电影资源的磁力链接

    对于喜欢电影的人来说各种电影资源必不可少,但每次自己搜索都比较麻烦,索性用python自己写一个自动搜索的脚本. 这里我只分享我的思路,具体如何实现参考代码,要想实现搜索功能先要抓包分析如何发送数据, ...

  5. python爬去电影天堂恐怖片+游戏

    1.爬去方式python+selenium 2.工作流程 selenium自动输入,自动爬取,建立文件夹,存入磁力链接到记事本 3.贴上代码 #!/usr/bin/Python# -*- coding ...

  6. 利用Python爬取电影网站

    #!/usr/bin/env python #coding = utf-8 ''' 本爬虫是用来爬取6V电影网站上的电影资源的一个小脚本程序,爬取到的电影链接会通过网页的形式显示出来 ''' impo ...

  7. 使用python爬取MedSci上的期刊信息

    使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn ...

  8. Python 爬取美团酒店信息

    事由:近期和朋友聊天,聊到黄山酒店事情,需要了解一下黄山的酒店情况,然后就想着用python 爬一些数据出来,做个参考 主要思路:通过查找,基本思路清晰,目标明确,仅仅爬取美团莫一地区的酒店信息,不过 ...

  9. python 爬取历史天气

    python 爬取历史天气 官网:http://lishi.tianqi.com/luozhuangqu/201802.html # encoding:utf-8 import requests fr ...

随机推荐

  1. 前端需要了解的HTTP协议

    目录 HTTP协议 HTTP概述 HTTP之URL HTTP状态码 HTTP首部 HTTP首部字段 HTTP通用首部字段 HTTP请求首部字段 HTTP工作原理 HTTP报文内的HTTP信息 HTTP ...

  2. 报错:Flink Could not resolve substitution to a value: ${akka.stream.materializer}

    报错现象: Exception in thread "main" com.typesafe.config.ConfigException$UnresolvedSubstitutio ...

  3. sql 存储过程和触发器

    mysql----------------------------------------------------------------------------------------------- ...

  4. mybatis关于ORM的使用以及设计(二)[DaoInterface 转换 Mapper代理对象]

    第一节中,分析了Mybatis的ORM框架的初始化,这篇来分析SQL执行过程中,对象->SQL是如何转换的 其中包含两种映射思想 ①DAO接口->Mapper实例 ②执行DAO的方法时,参 ...

  5. 级联Cascade

    cascade分为两类: 1.JPA标准 2.Hibernate标准 JPA的方法使用JPA规范 如@OneToMany(cascade=CascadeType.ALL,mappedBy=" ...

  6. Garbage-Only-One的IO路

    我的任务计划 刷题计划 BZOJ 1.1202 2.1008 3.等等 搜索 1.搜索题单 学习计划 树 1.树状数组or树状数组or树状数组 2.线段树 搜索 1.A*

  7. gradle项目

    gradle构建web项目 0.安装gradle http://services.gradle.org/distributions/ 下载对应版本:gradle-5.2.1-bin.zip 解压到自定 ...

  8. Flink开发环境搭建(maven)

    1.下载scala sdk http://www.scala-lang.org/download/ 直接到这里下载sdk,(https://downloads.lightbend.com/scala/ ...

  9. C语言博客作业6---结构体&文件

    C语言博客作业6---结构体&文件 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容.如下图所示: 1.2.学习体会 描述本周学习感受,也可以在这里提出你不理解地方.对 ...

  10. 手写实现ArrayList & LinkedList

    微信公众号:程序媛的非程序人生 关注可了解更多资讯.问题或建议,请公众号留言; 1.手写实现ArrayList     2.手写实现 LinkedList       3.LinkedList的数据结 ...