step_by_step_用python爬点磁力链接
今天是小年,团聚的日子,想想这一年中发生过大大小小的事,十分感慨。
言归正传: 接触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爬点磁力链接的更多相关文章
- DHT协议网络爬虫磁力链接和BT种子搜索引擎
系统功能和用到的技术. 系统包括几个独立的部分: 使用 Python 的 Scrapy 框架开发的网络爬虫,用来爬取磁力链接和种子: 使用 PHP CI 框架开发的简易网站: 搜索引擎目前直接使用的 ...
- 实战Python实现BT种子转化为磁力链接
经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些. 将BT种子转换为占用空间更小,分享更方便的磁 ...
- python爬取博客圆首页文章链接+标题
新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了. 使用python 爬取博客园首页文章链接和标题. 首先当然是环境了,爬虫在window10系统下,python ...
- 使用Python实现搜索任意电影资源的磁力链接
对于喜欢电影的人来说各种电影资源必不可少,但每次自己搜索都比较麻烦,索性用python自己写一个自动搜索的脚本. 这里我只分享我的思路,具体如何实现参考代码,要想实现搜索功能先要抓包分析如何发送数据, ...
- python爬去电影天堂恐怖片+游戏
1.爬去方式python+selenium 2.工作流程 selenium自动输入,自动爬取,建立文件夹,存入磁力链接到记事本 3.贴上代码 #!/usr/bin/Python# -*- coding ...
- 利用Python爬取电影网站
#!/usr/bin/env python #coding = utf-8 ''' 本爬虫是用来爬取6V电影网站上的电影资源的一个小脚本程序,爬取到的电影链接会通过网页的形式显示出来 ''' impo ...
- 使用python爬取MedSci上的期刊信息
使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn ...
- Python 爬取美团酒店信息
事由:近期和朋友聊天,聊到黄山酒店事情,需要了解一下黄山的酒店情况,然后就想着用python 爬一些数据出来,做个参考 主要思路:通过查找,基本思路清晰,目标明确,仅仅爬取美团莫一地区的酒店信息,不过 ...
- python 爬取历史天气
python 爬取历史天气 官网:http://lishi.tianqi.com/luozhuangqu/201802.html # encoding:utf-8 import requests fr ...
随机推荐
- POI 生成、导出Excel(包含多个sheet)带 图片
1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ar ...
- 使用Dockerfile创建镜像
Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像. 一.基本结构 Dockerfile由一行行命令语句组成,并且支持以#开头的注释行. 一般而言,D ...
- C#源码发送简单的HTTP请求
如下代码内容是关于C#发送简单的HTTP请求的代码,应该能对大家有用处. using System;using System.Collections.Generic;using System.Linq ...
- html网页中如何给文字加入下划线
网页中一些重要的文字或者特殊性高的文字,例如:链接,标注等我们需要加上下划线,那么这里我们就需要使用到<U>标签了,写法如下 字体下划线: <u>这里添加内容</u> ...
- 初次使用Windbg检查C#程序内存
1. 下载windbg并安装. 我下载的是 Windbg 6.12.注意,windbg分32位和64位,由分析环境的位数决定.我这里安装的是32位的.安装过程很简单,一路next就可以. 2. 准备被 ...
- samba、ftp和ssh服务
samba服务 Smb主要作为网络通信协议; Smb是基于cs架构: 完成Linux与windows之间的共享:linux与linux之间共享用NFS 第一步:安装samba [root@ken ~] ...
- Mac git 上传到 github
上传本地项目到github 1.初始化本地项目 进入到你的项目,根目录下git init,会在你的项目的根目录下多出一个.git的文件夹,也许你的mac隐藏了,但是用命令行或者vscode等工具是可以 ...
- JAVA正则表达式匹配,替换,查找,切割(转)
import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...
- mysql中的int和tinyint、varchar和char、DateTime和TimeStamp区别
一.int和tinyint的区别 大小: tinyint在mysql中占用1个字节 即: 1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方:11111111 = 256 在 ...
- Android 开发 CoordinatorLayout 协调者布局 与 ConstraintLayout约束布局 两者的关系
在摸索新技术是发现CoordinatorLayout 与 ConstraintLayout 会有冲突关系,所以就研究了一下他们之间的不兼容,被影响的方面.其实某种程度上来说是CoordinatorLa ...