成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Django-Scrapy生成后端json接口的方法示例

瀏覽:224日期:2024-05-27 17:55:27

網上的關于django-scrapy的介紹比較少,該博客只在本人查資料的過程中學習的,如果不對之處,希望指出改正;

以后的博客可能不會再出關于django相關的點;

人心太浮躁,個人深度不夠,只學習了一些皮毛,后面博客只求精,不求多;

希望能堅持下來。加油!

學習點:

實現效果 django與scrapy的創建 setting中對接的位置和代碼段 scrapy_djangoitem使用 scrapy數據爬取保存部分 數據庫設計以及問題部分 django配置

實現效果:

Django-Scrapy生成后端json接口的方法示例

django與scrapy的創建:

django的創建:

django startproject 項目名稱

cd 項目名稱python manage.py startapp appname

例如:

Django-Scrapy生成后端json接口的方法示例

scrapy的創建:

# cd django的根目錄下cd job_hntingscrapy startproject 項目名稱#創建爬蟲scrapy genspider spidername ’www.xxx.com’

例如:

Django-Scrapy生成后端json接口的方法示例

setting的設置:

在scrapy框架中的setting指向django,讓django知道有scrapy;

在scrapy中的setting設置;

import osimport django#導入os.environ[’DJANGO_SETTINGS_MODULE’] = ’job_hnting.settings’#手動初始化django.setup()

如:

Django-Scrapy生成后端json接口的方法示例

scrapy_djangoitem使用:

pip install scrapy_djangoitem

該庫在scrapy項目下的item中編寫引入:

import scrapy# 引入django中app中models文件中的類from app51.models import app51data# scrapy與django對接的庫from scrapy_djangoitem import DjangoItemclass JobprojectItem(DjangoItem): #引用django下的model中的類名 django_model = app51data

數據存儲部分對接在后面解釋,現在大體框架完整;

scrapy爬取保存部分:

首先編寫scrapy爬蟲部分:

我們選取的是51招聘網站的數據:

爬取分為三個函數:

主函數 解析函數 總頁數函數

51job的反爬手段:

將json的數據格式隱藏在網頁結構中,網上教程需要別的庫解析(自行了解),

我們的方法是使用正則匹配提取定位到數據部分,使用json庫解析:

# 定位數據位置,提取json數據 search_pattern = 'window.__SEARCH_RESULT__ = (.*?)</script>' jsonText = re.search(search_pattern, response.text, re.M | re.S).group(1)

獲得關鍵字總頁數:

# 解析json數據 jsonObject = json.loads(jsonText) number = jsonObject[’total_page’]

在主函數中構造頁面url并給到解析函數:

for number in range(1,int(numbers)+1): next_page_url = self.url.format(self.name,number) # print(next_page_url) #構造的Urlcallback到data_parse函數中 yield scrapy.Request(url=next_page_url,callback=self.data_parse)

最后在解析函數中提取需要的數據:

for job_item in jsonObject['engine_search_result']: items = JobprojectItem() items[’job_name’] = job_item[’job_name’] items[’company_name’] = job_item['company_name'] # 發布時間 items[’Releasetime’] = job_item[’issuedate’] items[’salary’] = job_item[’providesalary_text’] items[’site’] = job_item[’workarea_text’] .......

相關的細節部分需要自己調整,完整代碼在 GitHub 中。

數據爬取部分解決后,需要到scrapy項目中的pipline文件保存;

class SeemeispiderPipeline(object): def process_item(self, item, spider): item.save() return item

記得在setting文件中取消掉pipline的注釋

設置數據庫:

Django配置數據庫有兩種方法:

方法一:直接在settings.py文件中添加數據庫配置信息(個人使用的)

DATABASES = { # 方法一 ’default’: { ’ENGINE’: ’django.db.backends.mysql’, # 數據庫引擎 ’NAME’: ’mysite’, # 數據庫名稱 ’USER’: ’root’, # 數據庫登錄用戶名 ’PASSWORD’: ’123’,# 密碼 ’HOST’: ’127.0.0.1’,# 數據庫主機IP,如保持默認,則為127.0.0.1 ’PORT’: 3306, # 數據庫端口號,如保持默認,則為3306 }}

方法二:將數據庫配置信息存到一個文件中,在settings.py文件中將其引入。

新建數據庫配置文件my.cnf(名字隨意選擇)

[client]database = bloguser = blogpassword = bloghost =127.0.0.1port = 3306default-character-set = utf8

在settings.py文件中引入my.cnf文件

DATABASES = { # 方法二: ’default’: { ’ENGINE’: ’django.db.backends.mysql’, ’OPTIONS’: { ’read_default_file’: ’utils/dbs/my.cnf’, }, }}

啟用Django與mysql的連接

在生產環境中安裝pymysql 并且需要在settings.py文件所在包中的 __init__.py 中導入pymysql

Django-Scrapy生成后端json接口的方法示例

import pymysqlpymysql.install_as_MySQLdb()

對應前面的item,在spider中編寫時按照model設置的即可;;

from django.db import models# Create your models here.#定義app51的數據模型class app51data(models.Model): #發布時間,長度20 Releasetime = models.CharField(max_length=20) #職位名,長度50 job_name =models.CharField(max_length=50) #薪水 salary = models.CharField(max_length=20) #工作地點 site = models.CharField(max_length=50) #學歷水平 education = models.CharField(max_length=20) #公司名稱 company_name = models.CharField(max_length=50) #工作經驗 Workexperience = models.CharField(max_length=20) #指定表名 class Meta: db_table = ’jobsql51’ def __str__(self): return self.job_name

當指定完表名后,在DBMS中只需要創建對應的數據庫即可,表名自動創建

每次修改數據庫都要進行以下命令:

python manage.py makemigrationspython manage.py migrate

到此mysql數據庫配置完成

配置數據庫時遇到的錯誤:

Django啟動報錯:AttributeError: ’str’ object has no attribute ’decode’

解決方法:

找到Django安裝目錄

G:envdjango_jobLibsite-packagesdjangodbbackendsmysqloperations.py

編輯operations.py;

將146行的decode修改成encode

def last_executed_query(self, cursor, sql, params): # With MySQLdb, cursor objects have an (undocumented) '_executed' # attribute where the exact query sent to the database is saved. # See MySQLdb/cursors.py in the source distribution. query = getattr(cursor, ’_executed’, None) if query is not None: #query = query.decode(errors=’replace’) uery = query.encode(errors=’replace’) return query

django配置:

關于django的基礎配置,如路由,app的注冊等基礎用法,暫時不過多說明;

以下主要關于APP中視圖的配置,生成json;

from django.shortcuts import renderfrom django.http import HttpResponse# Create your views here.#引入數據from .models import app51dataimport jsondef index(request): # return HttpResponse('hello world') # return render(request,’index.html’) #獲取所有的對象,轉換成json格式 data =app51data.objects.all() list3 = [] i = 1 for var in data: data = {} data[’id’] = i data[’Releasetime’] = var.Releasetime data[’job_name’] = var.job_name data[’salary’] = var.salary data[’site’] = var.site data[’education’] = var.education data[’company_name’] = var.company_name data[’Workexperience’] = var.Workexperience list3.append(data) i += 1 # a = json.dumps(data) # b = json.dumps(list2) # 將集合或字典轉換成json 對象 c = json.dumps(list3) return HttpResponse(c)

實現效果:

Django-Scrapy生成后端json接口的方法示例

完整代碼在 GitHub 中,希望隨手star,感謝!

到此這篇關于Django-Scrapy生成后端json接口的方法示例的文章就介紹到這了,更多相關Django Scrapy生成json接口內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
强制捆绑调教一区二区| 午夜婷婷国产麻豆精品| 国产精品嫩草影院av蜜臀| 激情av综合网| 国产精品三区www17con| 中文字幕乱码一区二区免费| 国精产品一区一区三区mba桃花| 免费视频一区| 亚洲精品成人天堂一二三| 欧美久久九九| 欧美一区二区久久| 日韩avvvv在线播放| 午夜亚洲伦理| 亚洲小说春色综合另类电影| 亚洲每日在线| 综合久久综合久久| 欧美精品在线一区| 亚洲国产精品二十页| 91丨porny丨国产入口| 日韩欧美中文字幕精品| 国产一区不卡在线| 欧美精品久久久久久久久老牛影院| 免费日韩伦理电影| 美日韩在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| www.视频一区| 911精品产国品一二三产区 | 蜜臀av一区二区在线观看| 久久蜜桃资源一区二区老牛| 亚洲一区二区三区在线| 国产精品免费一区二区三区观看| 亚洲人成在线观看一区二区| 黑人巨大精品欧美一区二区小视频| 国产丝袜在线精品| 欧美成人首页| 国产欧美日韩激情| 国产精品v欧美精品v日韩| 国产精品毛片a∨一区二区三区| 欧美久久视频| 国产精品久久久久久久久晋中| 欧美激情第二页| 久久精品欧美日韩| 国产综合婷婷| 亚洲视频香蕉人妖| 中文久久精品| 亚洲午夜久久久久久久久电影网| 亚洲一区二区伦理| 午夜亚洲国产au精品一区二区| 老司机久久99久久精品播放免费| 日本成人中文字幕在线视频| 欧美中文字幕久久| 国产高清视频一区| 日韩欧美国产小视频| 91丨porny丨国产| 中文国产一区| 亚洲午夜激情av| 一本久久综合亚洲鲁鲁五月天| 欧美日韩精品| 国产精品一区在线播放| 欧美jizzhd精品欧美巨大免费| 奇米精品一区二区三区在线观看| 精品国产免费视频| 99热这里只有精品8| 亚洲成av人片观看| 日韩欧美另类在线| 国产综合一区二区| 偷拍一区二区三区四区| 国产精品乱人伦中文| 亚洲免费在线| 欧美日韩精品伦理作品在线免费观看| 免费观看在线综合| 亚洲另类春色校园小说| 日韩欧美国产一区在线观看| 欧美日韩精品综合在线| 日韩欧美不卡一区| av午夜一区麻豆| 国产精品久久久久久久久免费樱桃 | 日韩一区二区三区av| 91麻豆国产福利精品| 亚洲美女在线国产| 另类av一区二区| 国产麻豆欧美日韩一区| 欧美激情一区在线| 国产精品综合色区在线观看| 久久99这里只有精品| 久久久激情视频| 六月婷婷久久| 国产福利一区二区三区视频在线 | 成人精品在线视频观看| 综合分类小说区另类春色亚洲小说欧美| 亚洲一区在线直播| 精品一二线国产| 久久综合九色综合97婷婷女人 | 久久99九九99精品| 国产婷婷色一区二区三区| 国产一区91| 豆国产96在线|亚洲| 亚洲日本丝袜连裤袜办公室| 欧美性高清videossexo| 91视频在线观看| 亚洲电影第三页| 日韩视频一区二区| 亚洲毛片在线| 国产精品一区二区视频| 国产精品乱码一区二三区小蝌蚪| 久久亚洲精品欧美| 成人涩涩免费视频| 亚洲综合一区二区三区| 欧美一区二区三区视频在线观看| 亚洲国产导航| 国产在线播放一区三区四| 国产精品视频你懂的| 欧美日韩综合不卡| 精品福利电影| 国产经典欧美精品| 国产精品久线观看视频| 在线观看视频一区二区欧美日韩 | 久久久夜夜夜| 99久久99久久免费精品蜜臀| 亚洲电影你懂得| 久久夜色精品国产噜噜av| 色哟哟日韩精品| 国产精品高清一区二区三区| 久久国产精品免费| 最新国产精品久久精品| 欧美男人的天堂一二区| 亚洲高清成人| 成人一区二区三区| 日韩精品五月天| 日本一区二区三级电影在线观看 | 欧美午夜免费| 国产激情视频一区二区在线观看| 亚洲综合色噜噜狠狠| 久久久久88色偷偷免费| 欧美性受极品xxxx喷水| 激情一区二区| 国产.欧美.日韩| 日本欧美加勒比视频| 亚洲麻豆国产自偷在线| 精品对白一区国产伦| 色婷婷综合久久| 激情自拍一区| 99这里只有精品| 精品一区二区三区免费观看| 一区二区三区四区视频精品免费| 精品国产91久久久久久久妲己 | 久久五月天婷婷| 国产综合自拍| 不卡的av网站| 久久精品国产一区二区三 | 欧美日韩一级二级| 国产日韩一区二区三区在线播放 | 免费成人在线影院| 夜夜嗨av一区二区三区四季av| 国产亚洲综合性久久久影院| 91麻豆精品国产91久久久久久久久 | 国产一区二区三区精品视频| 亚洲第一狼人社区| 亚洲久草在线视频| 国产精品免费看片| 久久综合丝袜日本网| 4438x成人网最大色成网站| 色综合久久六月婷婷中文字幕| 亚洲人成网站在线观看播放| 欧美在线亚洲| 99re66热这里只有精品3直播 | 成人综合婷婷国产精品久久 | 国产综合色产| 欧美日韩调教| 91女人视频在线观看| 成人激情免费视频| 国产一区二区伦理| 久久精工是国产品牌吗| 日韩精品一二三| 亚洲亚洲精品在线观看| 亚洲精品视频免费看| 亚洲三级在线免费| 亚洲天天做日日做天天谢日日欢 | 国产精品久久久久久久久果冻传媒| 国产午夜精品久久| 2019国产精品| 久久老女人爱爱| 久久欧美中文字幕| 欧美精品一区二区蜜臀亚洲| 日韩午夜三级在线| 日韩一区二区免费电影| 91精品国产综合久久精品麻豆| 在线一区二区三区四区五区| 蜜桃伊人久久| 久久字幕精品一区| 久久只有精品| 欧美亚一区二区| 欧美日韩精品一区二区三区四区| 老司机午夜精品视频| 一本色道久久综合精品竹菊| 久久综合九色综合欧美狠狠| 色94色欧美sute亚洲线路一久| 色综合久久久久网| 色老汉一区二区三区| 欧美在线影院一区二区|