Python+scrapy+mysql实现爬取磁力链接

作为老司机中的一员,所以试试爬取磁力链接,看看效果咋样。

直接上代码:

class torrentSpider(scrapy.Spider):

name = "torrent"

allowed_domains = [""]

start_urls = ['http:(网址不公布了)/so/abp-first-asc-1?f=h']

def parse(self, response):

#下面元组这里填一些简单的关键词信息,如什么前缀之类的

destination = ('')

通过css选择器选取对应的内容

post_nodes = response.css('.list a')

#从磁链列表解析每一个结果,然后通过parse_detail()解析名字和对应磁链

for post_node in post_nodes:

post_url = post_node.css('::attr(href)').extract_first('')

url = parse.urljoin(response.url, post_url)

yield Request(url=parse.urljoin(response.url, post_url),

callback=self.parse_detail)

for i in range(0,len(destination)):

#可以自己选择一个合适的页数

for num in range(1, ?):

#根据元组和页数拼成url

url = ''+destination[i]+'-first-asc-' + str(num) + '?f=h'

#交给yield处理

yield Request(url, callback=self.parse)

def parse_detail(self, response):

my_torrent = MyTorrentItem()

item_loader = MyTorrentItemLoader(item=MyTorrentItem(), response=response)

#//*[@id="container"]/div[1]/dl/p[6]/a

item_loader.add_css('name', '.nobg small::text')

item_loader.add_css('torrent', '.magta::text')

my_torrent = item_loader.load_item()

yield my_torrent

下面是对应的MyTorrentItem:

class MyTorrentItemLoader(ItemLoader):

# 自定义ItemLoader

default_output_processor = TakeFirst()

class MyTorrentItem(scrapy.Item):

name = scrapy.Field()

torrent = scrapy.Field()

def get_insert_sql(self):

insert_sql = """

insert into my_torrent(name, torrent)

VALUES (%s, %s)

"""

params = (self["name"], self["torrent"])

return insert_sql, params

下面是pipelines.py的与数据库交互的代码

class MysqlTwistedPipeline(object):

def __init__(self, dbpool):

self.dbpool = dbpool

@classmethod

def from_settings(cls, settings):

dbparms = dict(

host=settings["MYSQL_HOST"],

db=settings["MYSQL_DBNAME"],

user=settings["MYSQL_USER"],

passwd=settings["MYSQL_PASSWORD"],

charset='utf8',

cursorclass=MySQLdb.cursors.DictCursor,

use_unicode=True,

)

dbpool = adbapi.ConnectionPool("MySQLdb", **dbparms)

return cls(dbpool)

def process_item(self, item, spider):

# 使用twisted将mysql插入变成异步执行

query = self.dbpool.runInteraction(self.do_insert, item)

query.addErrback(self.handle_error, item, spider) # 处理异常

def handle_error(self, failure, item, spider):

# 处理异步插入的异常

print(failure)

def do_insert(self, cursor, item):

# 执行具体的插入

# 根据不同的item 构建不同的sql语句并插入到mysql中

insert_sql, params = item.get_insert_sql()

# print(insert_sql, params)

cursor.execute(insert_sql, params)

这里采用异步插入,

到现在爬了半个钟,大概爬了50000+条,由于调的是打印输出日志,导致效率低了一些,,

仅供参考学习,欢迎大家指导。

相关报道:

来源:GBin1.com 如 果你想建立集资网站,本文将为你介绍10个强大的博客系统主题模板。集资最近成为一个热门的趋势,随着Kickstarter的成功,很多人都开 始想创建自己的集资网站了。有什么方式能比直接使用博客系统主题模板更节约开发成本呢?网上开发所耗费 更多

print?//开始缓存图片 ob_start();//启用输出缓存,暂时将要输出的内容缓存起来 imagejpeg($newimage,false,$quality);//输出 $data = ob_get_contents();//获取刚才获取的缓存 ob_end_clean();//清空缓存 $mem =get_memcache();//自己修改 $mem-set($mem_key 更多

scrapy链接mysql_Python+scrapy+mysql实现爬取磁力链接相关推荐

  1. Python+scrapy+mysql实现爬取磁力链接

    Python+scrapy+mysql实现爬取磁力链接 作为老司机中的一员,所以试试爬取磁力链接,看看效果咋样. 直接上代码: class torrentSpider(scrapy.Spider):n ...

  2. scrapy过滤重复数据和增量爬取

    原文链接 前言 这篇笔记基于上上篇笔记的---<scrapy电影天堂实战(二)创建爬虫项目>,而这篇又涉及redis,所以又先熟悉了下redis,记录了下<redis基础笔记> ...

  3. 初探Scrapy爬虫框架之百度网页爬取

    初探Scrapy爬虫框架之百度网页爬取 scrapy框架及百度网页爬取与保存 一.scrapy框架简介 二.自己初使用的心得体会 1.爬虫之前明确目标 2.scrapy框架的简单使用流程 3.scra ...

  4. Python爬虫-利用Scrapy框架完成天天书屋内容爬取并保存本地txt

    准备工作 首先创建项目,代码操作参照我之前的博客,这里强调一下,由于scrapy是异步io,同时处理多个http,所以要想按顺序存一个txt每章按顺序写入,可以实现但有点繁琐,这里只为了scrapy的 ...

  5. scrapy框架,腾讯新闻爬取

    Scrapy框架,腾讯新闻爬取 创建工程命名newsqq 1.1使用命令创建 scrapy 工程 1.2新建爬虫主文件 1.2.1爬虫完整代码 1.3 修改项目 item.py 文件 1.4修改项目 ...

  6. 用python进行多页数据爬取_Python Scrapy如何实现多页数据爬取?

    Python Scrapy如何实现多页数据爬取? 发布时间:2020-06-23 11:47:46 来源:亿速云 阅读:112 作者:清晨 这篇文章将为大家详细讲解有关Python Scrapy如何实 ...

  7. 捡了鼠标开网吧系列——nodejs爬取电影链接

    前言 最近在看新出的电视剧"斗破苍穹",可是一集电视剧的广告开头90s中间45s片尾15s,实在令人发指.之前有了解过,网上有很多免vip解析接口,于是本渣决定动手做一个可以去除广 ...

  8. python爬虫scrapy爬取新闻标题及链接_18Python爬虫---CrawlSpider自动爬取新浪新闻网页标题和链接...

    一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 scrapy startproj ...

  9. scrapy连接MySQL数据库爬取英雄联盟英雄传记

    作为一位对联盟游戏的爱好者,学习爬虫的时候也以这款游戏作为对象. 这个项目使用的python版本:3.6.0,scrapy使用的版本:1.11.参照这篇博客即便是不会爬虫的小白也可以带你做出一个完整的 ...

最新文章

  1. linux获取近一小时日志,Linux分析日志获取最多访问的前10个IP
  2. python _、__和__xx__的区别
  3. 深入浅出grep与正则表达式
  4. SpringBoot笔记1-使用idea创建SpringBoot的hello world
  5. Java学习—— for循环
  6. SimpleDateFormat 出现错误 Call requires API level 24 (current min is 15)
  7. Jupiter黑客松——IPFS开发者大赛火热报名中!
  8. php学了基本语法后应该怎么做,PHP编程入门的基本语法知识点总结
  9. 操作系统中的全局页面置换算法
  10. 场景服务只创建了 Service Difinition 和feature layer
  11. Python菜鸟入门:day09数据结构
  12. vue openlayer单击地图事件循环多次执行_Vue中$nextTick的理解
  13. swift 闭包简写实际参数名$0、$1等理解
  14. jmake 编译当前目录所有c/c++单文件
  15. [bzoj2002][Hnoi2010]Bounce 弹飞绵羊(LCT)
  16. 能学习计算机考证的手机软件有那些?推荐
  17. rstudio 连接mysql_RStudio 操作MySQL数据库
  18. 计蒜客习题:猴子打字
  19. oracle SDO_ORDINATE_ARRAY直接展示
  20. 无人机自动悬停的秘密

热门文章

  1. Attribute(特性)
  2. Kali配置LNMP环境并搭建pikachu环境
  3. XRecyclerView上下拉使用
  4. Java中常见的final类
  5. 微型计算机电话系统设计,《智能电力线载波电话系统》-毕业论文(设计).doc...
  6. 如何获取iPhone设备的设备信息
  7. 微信公众平台 - 微信卡券 - 创建会员卡接口值得注意的地方
  8. el-table中设置fixed后表格错位
  9. vue 中 ckeditor5 如何隐藏工具条
  10. ARP原理和ARP攻击