下記のコードで3つの変数がテンプレートで使用できるようになりました。
context['search_keywords']
context['search_count']
context['google_results']
その内google_resultsにはURLのリストが入っています。
そのリストを他のファイルで受け取りたいのですがうまくいきません。
contextは他のファイルからはどのようにして参照すればいいでしょうか?
同じプロジェクト内のdjangoではないファイルです。
views.py
python
1from django.shortcuts import render 2from django.views.generic import TemplateView 3from bs4 import BeautifulSoup 4import requests 5import re 6from googlesearch import search 7 8class IndexView(TemplateView): 9 10 template_name = 'main/index.html' 11 12 def get_context_data(self, **kwargs): 13 context = super().get_context_data(**kwargs) # はじめに継承元のメソッドを呼び出す 14 context['search_keywords'] = self.request.GET.get('search_keywords') 15 context['search_count'] = self.request.GET.get('search_count') 16 context['google_results'] = self.google_search(self.request.GET.get('search_keywords'), self.request.GET.get('search_count')) 17 return context 18 19 20 def google_search(self,query,page): 21 """1ページ10件、stop=2で20件の検索結果を返す""" 22 results = search(query, lang='jp', stop=int(page), pause=2.0, user_agent='Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25') 23 g =[] 24 for x in results: 25 g.append(x) 26 return g
受け取りたいファイル
aficrawl2.py
こちらはスクレイピング用のファイルで同じプロジェクト内にあります。
こちらでリストのURLを受け取りたいです。。
python
1# -*- coding: utf-8 -*- 2import scrapy 3 4 5class BlogSpider(scrapy.Spider): 6 name = 'blogspider' # Spider の 名前。 # クロール を 開始 する URL の リスト。 7 start_urls = ['ここにリストを受け取りたい'] 8 9 def parse(self, response): 10 """ トップページ から カテゴリ ページ への リンク を 抜き出し て たどる。 """ 11 i = {} 12 i['title'] = response.xpath('//title/text()').extract_first() 13 i['description'] = response.xpath('/html/head/meta[@name="description"]/@content').extract_first() 14 i['h1'] = response.xpath('//h1/text()').extract() 15 i['h2'] = response.xpath('//h2/text()').extract() 16 i['h3'] = response.xpath('//h3/text()').extract() 17 i['h4'] = response.xpath('//h4/text()').extract() 18 i['h5'] = response.xpath('//h5/text()').extract() 19 i['h6'] = response.xpath('//h6/text()').extract() 20 21 yield i
python
1from afiscrapy.main.views import IndexView 2 3============================ 4if __name__=='__main__': 5 results = IndexView.get_context_data() 6 start_urls = results['google_results'] 7 print(results['google_results']) 8 9
IndexViewをインポートしてきてget_context_data()を呼び出せば、
context['google_results']を扱えるかと思いましたが、
ModuleNotFoundError: No module named 'afiscrapy'
モジュールが見つかりません。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/22 15:57