本次主要讲述在scrapy框架下pythom爬虫有关mysql数据库的相关内容。
首先在MySQL数据库中创建对应的表,注意字段的设计!
数据库的信息存在setting 里,数据信息host,database,user,password,port等取出
打开管道文件pipelien.py,添加一个存储到MySQL数据库中的一个管道类(),我们可以参照管道文件初始化中,自带的管道类<项目名称>Pipeline写法,写一个Pipeline管道类。
连接数据库*执行sql语句
从setting文件中获得数据库信息,将从数据库中获得的信息定义保存到目前文件打开open_spider()开始爬虫自动连接数据库,self.db=pymysql.connect()创立连接,self.cursor=self.db.cursor()创立邮标
使用邮标self.cursor.execute(sql)执行SQL命令
在settings.py中配置:
process_item():该方法专门用来处理item类型对象,可以接收爬虫文件提交过来的item对象该方法每接收到一个item就会被调用一次
运行实例:
最后奉上有关代码:
import pymysql
class TenxunPipeline:
def process_item(self, item, spider):
return item
class TenxunPipeline(object):
def __init__(self,host,database,user,password,port):
self.host = host
self.database = database
self.user = user
self.password = password
self.port = port
@classmethod
def from_crawler(cls, crawler):
return cls(
host=crawler.settings.get("MYSQL_HOST"),
database=crawler.settings.get("MYSQL_DATABASE"),
user=crawler.settings.get("MYSQL_USER"),
password=crawler.settings.get("MYSQL_PASSWORD"),
port=crawler.settings.get("MYSQL_PORT"),
)
def open_spider(self, spider):
#开始爬虫时自动连接数据库
self.db= pymysql.connect(host=self.host, user=self.user,password=self.password,database=self.database, charset='utf8', port=self.port)
self.cursor = self.db.cursor()
def process_item(self, item, spider):
sql = "insert into enter_recruit(id,enterprise,recruit_type,source_web, position_name, occupation_type, publish_time,job_description,job_requirements,work_address,interview) values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"%(item['id'],item['enterprise'], item['recruit_type'], item['source_web'], item['position'], item['occupation_type'], item['publish_time'], item['job_description'], item['job_requirements'], item['work_address'], item['interview'])
#执行sql命令
self.cursor.execute(sql)
#提交sql命令
self.db.commit()
return item
def close_spider(self, spider):
self.db.close()
本文章为pythom项目“scrapy实战-爬取腾讯的招聘信息”有关数据库方面的相关内容
有关“scrapy实战--爬取腾讯的招聘信息”scrapy框架以及其他信息请前往scrapy实战--爬取腾讯的招聘信息_洛厨@锦依的博客-CSDN博客查看,谢谢。