scrapy链接mysql_Python+scrapy+mysql实现爬取磁力链接
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实现爬取磁力链接相关推荐
- Python+scrapy+mysql实现爬取磁力链接
Python+scrapy+mysql实现爬取磁力链接 作为老司机中的一员,所以试试爬取磁力链接,看看效果咋样. 直接上代码: class torrentSpider(scrapy.Spider):n ...
- scrapy过滤重复数据和增量爬取
原文链接 前言 这篇笔记基于上上篇笔记的---<scrapy电影天堂实战(二)创建爬虫项目>,而这篇又涉及redis,所以又先熟悉了下redis,记录了下<redis基础笔记> ...
- 初探Scrapy爬虫框架之百度网页爬取
初探Scrapy爬虫框架之百度网页爬取 scrapy框架及百度网页爬取与保存 一.scrapy框架简介 二.自己初使用的心得体会 1.爬虫之前明确目标 2.scrapy框架的简单使用流程 3.scra ...
- Python爬虫-利用Scrapy框架完成天天书屋内容爬取并保存本地txt
准备工作 首先创建项目,代码操作参照我之前的博客,这里强调一下,由于scrapy是异步io,同时处理多个http,所以要想按顺序存一个txt每章按顺序写入,可以实现但有点繁琐,这里只为了scrapy的 ...
- scrapy框架,腾讯新闻爬取
Scrapy框架,腾讯新闻爬取 创建工程命名newsqq 1.1使用命令创建 scrapy 工程 1.2新建爬虫主文件 1.2.1爬虫完整代码 1.3 修改项目 item.py 文件 1.4修改项目 ...
- 用python进行多页数据爬取_Python Scrapy如何实现多页数据爬取?
Python Scrapy如何实现多页数据爬取? 发布时间:2020-06-23 11:47:46 来源:亿速云 阅读:112 作者:清晨 这篇文章将为大家详细讲解有关Python Scrapy如何实 ...
- 捡了鼠标开网吧系列——nodejs爬取电影链接
前言 最近在看新出的电视剧"斗破苍穹",可是一集电视剧的广告开头90s中间45s片尾15s,实在令人发指.之前有了解过,网上有很多免vip解析接口,于是本渣决定动手做一个可以去除广 ...
- python爬虫scrapy爬取新闻标题及链接_18Python爬虫---CrawlSpider自动爬取新浪新闻网页标题和链接...
一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 scrapy startproj ...
- scrapy连接MySQL数据库爬取英雄联盟英雄传记
作为一位对联盟游戏的爱好者,学习爬虫的时候也以这款游戏作为对象. 这个项目使用的python版本:3.6.0,scrapy使用的版本:1.11.参照这篇博客即便是不会爬虫的小白也可以带你做出一个完整的 ...
最新文章
- linux获取近一小时日志,Linux分析日志获取最多访问的前10个IP
- python _、__和__xx__的区别
- 深入浅出grep与正则表达式
- SpringBoot笔记1-使用idea创建SpringBoot的hello world
- Java学习—— for循环
- SimpleDateFormat 出现错误 Call requires API level 24 (current min is 15)
- Jupiter黑客松——IPFS开发者大赛火热报名中!
- php学了基本语法后应该怎么做,PHP编程入门的基本语法知识点总结
- 操作系统中的全局页面置换算法
- 场景服务只创建了 Service Difinition 和feature layer
- Python菜鸟入门:day09数据结构
- vue openlayer单击地图事件循环多次执行_Vue中$nextTick的理解
- swift 闭包简写实际参数名$0、$1等理解
- jmake 编译当前目录所有c/c++单文件
- [bzoj2002][Hnoi2010]Bounce 弹飞绵羊(LCT)
- 能学习计算机考证的手机软件有那些?推荐
- rstudio 连接mysql_RStudio 操作MySQL数据库
- 计蒜客习题:猴子打字
- oracle SDO_ORDINATE_ARRAY直接展示
- 无人机自动悬停的秘密