介绍
这期内容当中小编将会给大家带来有关Django-Scrapy实现生成后端json接口,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强> django与scrapy的创建:强>
django的创建:
django startproject项目名称
cd项目名称 python管理。py startapp浏览器名称
例如:
scrapy的创建:
# cd django的根目录下 cd job_hnting scrapy startproject项目名称 #创建爬虫 scrapy genspider spidername & # 39; www.xxx.com& # 39;
例如:
导入操作系统 进口django #导入 os.environ [& # 39; DJANGO_SETTINGS_MODULE& # 39;]=& # 39; job_hnting.settings& # 39; #手动初始化 django.setup ()
如:
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(名字随意选择)