之前使用的普通的spider,我们需要自己在解析完整个页面后获取下一页的url,然后重新发送一个请求。有时候我们想要这样做,只要满足某个条件的url,都给我进行爬取。那么我们就可以通过CrawlSpider来帮我们完成了。CrawlSpider继承自Spider,只不过是在之前的基础之上增加了新的功能。可以定义爬取的url的规则,以后scrapy碰到满足条件的url都进行爬取,而不用手动的yield Request。
创建CrawlSpider爬虫:
scrapy genspider -t crawl [爬虫名称][域名]
异步保存MySQL数据
1,使用twisted.enterprise.adbapi来创建连接池。
# 连接数据库
self.adpool= adbapi.ConnectionPool(
mysql_config['DRIVER'],
host =mysql_config['HOST'],
port = mysql_config['PORT'],
user =mysql_config['USER'],
password =mysql_config['PASSWORD'],
db = mysql_config['DATABASE'],
# 在建表时注意需要设置字段的编码属性为‘utf8’,否则会报错
charset = 'utf8'
)
print('连接数据库成功')
# 只要重写了from_crwaler()方法,那么以后创建对象的时候,就会调用这个方法来获取pipeline对象。
@classmethod
def from_crawler(cls,crawler):
mysql_config=crawler.settings['MYSQL_CONFIG']
return cls(mysql_config)
2,使用runInteraction来运行插入sql语句的函数
def