Django-Scrapy实现生成后端json接口

  介绍

这期内容当中小编将会给大家带来有关Django-Scrapy实现生成后端json接口,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强> django与scrapy的创建:

django的创建:

 django startproject项目名称
cd项目名称   python管理。py startapp浏览器名称

例如:

 Django-Scrapy实现生成后端json接口

scrapy的创建:

 # cd django的根目录下
  cd job_hnting
  scrapy startproject项目名称
  #创建爬虫
  scrapy genspider spidername & # 39; www.xxx.com& # 39; 

例如:

 Django-Scrapy实现生成后端json接口”>,</p> <p> </p> <p>在scrapy框架中设定的指向django,让django知道有scrapy; </p> <p>在scrapy中设定的设置;</p> <pre class=导入操作系统   进口django      #导入   os.environ [& # 39; DJANGO_SETTINGS_MODULE& # 39;]=& # 39; job_hnting.settings& # 39;   #手动初始化   django.setup ()

如:

 Django-Scrapy实现生成后端json接口

 pip安装scrapy_djangoitem 

该库在scrapy项目下的项目中编写引入:

进口scrapy   #引入django中应用中模型文件中的类   从app51。模型导入app51data   # scrapy与django对接的库   从scrapy_djangoitem进口DjangoItem         类JobprojectItem (DjangoItem):   #引用django下的模型中的类名   django_model=app51data

数据存储部分对接在后面解释,现在大体框架完整,

首先编写scrapy爬虫部分:

我们选取的是51招聘网站的数据:

爬取分为三个函数:

    <李>主函数李 <>李解析函数 <李>总页数函数

前程无忧的反爬手段:

将json的数据格式隐藏在网页结构中,网上教程需要别的库解析(自行了解),

我们的方法是使用正则匹配提取定位到数据部分,使用json库解析:

 #定位数据位置,提取json数据
  search_pattern=按翱凇_SEARCH_RESULT__=(. *和# 63;)& lt;/script>“
  jsonText=re.search (search_pattern响应。文本,re.M | re.S) .group (1) 

获得关键字总页数:

 #解析json数据
  jsonObject=json.loads (jsonText)
  数量=jsonObject [& # 39; total_page& # 39;] 

在主函数中构造页面url并给到解析函数:

数量的范围(1,int(数字)+ 1):
  next_page_url=self.url.format (self.name、数量)
  #打印(next_page_url)
  #构造的Urlcallback到data_parse函数中
  收益率scrapy.Request (url=next_page_url调=self.data_parse) 

最后在解析函数中提取需要的数据:

 job_item的jsonObject [“engine_search_result"]:
  项=JobprojectItem ()
  项目(& # 39;job_name # 39;]=job_item [& # 39; job_name # 39;】
  项目(& # 39;company_name& # 39;]=job_item (“company_name")
  #发布时间
  项目(& # 39;Releasetime& # 39;]=job_item [& # 39; issuedate& # 39;】
  项目(& # 39;工资# 39;]=job_item [& # 39; providesalary_text& # 39;】
  项目(& # 39;网站# 39;]=job_item [& # 39; workarea_text& # 39;】
  ……

相关的细节部分需要自己调整,完整代码在GitHub中。

数据爬取部分解决后,需要到scrapy项目中时的文件保存;

类SeemeispiderPipeline(对象):
  def process_item(自我,物品,蜘蛛):
  item.save ()
  返回项目

记得在设置文件中取消掉油的注释

<强> Django配置数据库有两种方法:

方法一:直接在设置。py文件中添加数据库配置信息(个人使用的)

数据库
  #方法一
  & # 39;默认# 39;:{
  & # 39;引擎# 39;:& # 39;django.db.backends.mysql& # 39; #数据库引擎
  & # 39;名字# 39;:& # 39;mysite& # 39; #数据库名称
  & # 39;用户# 39;:& # 39;根# 39;#数据库登录用户名
  & # 39;密码# 39;:& # 39;123 & # 39;#密码
  & # 39;主机# 39;:& # 39;127.0.0.1 # 39;#数据库主机IP,如保持默认,则为127.0.0.1
  & # 39;港口# 39;:3306,#数据库端口号,如保持默认,则为3306人
  }
  }

方法二:将数据库配置信息存到一个文件中,在settings.py文件中将其引入。

新建数据库配置文件my.cnf(名字随意选择)

Django-Scrapy实现生成后端json接口