爬点东西 -Scrapy

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

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

  1. scrapy startproject btxxxx
  2.  
  3. scrapy genspider -t crawl btxxxx xxx.info

spider的代码

 
  1. # -*- coding: utf-8 -*-
  2. import scrapy
  3. from scrapy.linkextractors import LinkExtractor
  4. from scrapy.spiders import CrawlSpider, Rule
  5. import urllib
  6. from xxx.items import XxxxItem
  7. import sys
  8.  
  9. reload(sys)
  10.  
  11. sys.setdefaultencoding('utf8')
  12.  
  13. class BtxxxxSpider(CrawlSpider):
  14. name = 'btxxxx'
  15. allowed_domains = ['btxxxx.info']
  16. def __init__(self, key_word='', *args, **kwargs):
  17. super(BtxxxxSpider, self).__init__(*args, **kwargs)
  18. self.key_words = key_word
  19. quote_str = urllib.quote(self.key_words)
  20. # 网址就不搞出来啦
  21. zero_url = 'http://www.xxxx.info/search/' + quote_str + '.html'
  22. self.start_urls = [zero_url]
  23.  
  24. rules = (
  25. Rule(LinkExtractor(allow=r'\/search\/b-[\s\S]*\.html'),callback='root_url', follow=True),
  26. Rule( LinkExtractor(
  27. allow=r'\/search\/b-[a-z,A-Z,0-9]+\/[0-9]+-[0-9]+\.html'), callback='content_url', follow=True
  28. ),
  29. Rule(LinkExtractor(allow=r'\/wiki\/.*\.html'), callback='parse_item', follow=False)
  30. )
  31.  
  32. def root_url(self, response):
  33. pass
  34.  
  35. def content_url(self, response):
  36. pass
  37.  
  38. def parse_item(self, response):
  39. i = BtxxxxItem()
  40. script_txt = response.xpath('//*[@id="wall"]/h2/script/text()').extract()
  41. if len(script_txt) !=0:
  42. url_str = script_txt[0].replace('document.write(decodeURIComponent(', '').replace('));', '').replace('"','')
  43. link_name = urllib.unquote(str(url_str.replace('+', '')))
  44. i["file_name"] = link_name
  45. print "*" * 10
  46. #print link_name
  47. print "*" * 10
  48. file_nodes = response.xpath('//*[@id="wall"]/div/table/tr[last()]/td/text()').extract()
  49. print "#" * 10
  50. print file_nodes
  51. print "#" * 10
  52. if len(file_nodes) > 0 :
  53. i["file_type"] = file_nodes[0].replace('\n', '')
  54. i["file_createtime"] = file_nodes[1].replace('\n', '')
  55. i["file_hot"] = file_nodes[2].replace('\n', '')
  56. i["file_size"] = file_nodes[3].replace('\n', '')
  57. i["file_url"] = response.url
  58. file_link = response.xpath('//*[@id="wall"]/div[1]/div[1]/div[2]/a/@href').extract()
  59. if len(file_link) > 0:
  60. i["file_link"] = file_link[0]
  61. yield i

items的代码

  1. class BtxxxxItem(scrapy.Item):
  2. file_type = scrapy.Field()
  3. file_createtime = scrapy.Field()
  4. file_hot = scrapy.Field()
  5. file_size = scrapy.Field()
  6. file_count = scrapy.Field()
  7. file_link = scrapy.Field()
  8. file_name = scrapy.Field()
  9. file_url = scrapy.Field()

settings 中添加

  1. FEED_EXPORT_ENCODING = 'utf-8'

并启用  DEFAULT_REQUEST_HEADERS

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

  1. 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. 从Wos文本数据中获取摘要进行分析的一种方法

    namespace 清理数据 { class Program { static void Main(string[] args) { string strDirName = "File&qu ...

  2. windows github 下载慢 修改hosts

    参考:Github访问速度慢和下载慢的解决方法 [Github]windows上访问github慢的解决方法 方法:绕过dns解析,在本地直接绑定host,该方法也可加速其他因为CDN被屏蔽导致访问慢 ...

  3. nfs与dhcp服务

    NFS服务端概述 NFS,是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS: NFS允许一个系统在网络上与他人共享目录 ...

  4. mysql索引总结(转)

    mysql索引总结----mysql 索引类型以及创建 文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好 ...

  5. 三、CSS样式——文本

    CSS文本 概念:CSS文本属性可定义文本外观 通过文本属性,可以改变文本的颜色.字符间距.对齐文本.装饰文本.对文本缩进 属性 描述 color 文本颜色 direction 文本方向 line-h ...

  6. java9 Local-variable type inference

    var ls = Arrays.asList("1","2"); System.out.println(ls);

  7. Oracle不常用SQL

    Oracle 查询最近创建的表 select * from user_objects where object_type='TABLE' order by created desc Oracle 查询 ...

  8. 文件系统的描述信息-/etc/fstab

    /etc/fstab文件包含众多文件系统的描述信息.文件中每一行为一个文件系统的描述,每行的选项之间通过tab分隔,#开头的行会被转换为注释,空白行会被忽略./etc/fstab文件中的设备顺序很重要 ...

  9. leetcode每日刷题计划-简单篇day9

    Num 38 报数 Count and Say 题意读起来比较费劲..看懂了题还是不难的 注意最后的长度是sz的长度,开始写错写的len 在下次计算的时候len要更新下 说明 直接让char和int进 ...

  10. Channels实现扫码登录

    参考了下别人说的原理,根据自己的逻辑实现,没有完全按照别人的原理来,所以不一定适用于大家,仅供参考吧!!! 流程如下: 1. web发起websocket链接,后端接受链接后立马发送第一次消息,为全局 ...