前提・実現したいこと
こんにちわ。Python初学者です。
以前にも似たような質問をこちらでさせてもらっているのですが、DjangoののORMを使ってスクレイピングをしたデータをDjangoで(http://127.0.0.1:8000/new/)にアクセスしたときにデータベース格納した<a>タグの文字列と<span>タグのデータを配列で一つ一つの配列をテーブルで表示させたいのですがうまくいきません。
views.pyの変数elementでスクレイピングをしたリンクURLが取得されていて、datesは日付が取得されています。Datebaseの設定はMysqlで設定はしました。
すいません、ORMのことがいまいち理解できていなく、、ぜひご教授いただきたいです。
発生している問題・エラーメッセージ
エラー文は特に何も出ていません。スクレイピイングしたデータがブラウザにずらっと並んでいますが、、、ORMを使ってテーブル上に一つ一つのスクレイピングしたデータをカラムに入れて表示させたいです。
データの紐付けが上手くいってないように感じます。どのようにしたら良いのでしょうか?
該当のソースコード
new/views.py
from django.shortcuts import render from selenium import webdriver import chromedriver_binary from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options import time from .models import Post from .models import Company options = Options() options.headless = True options.add_argument('--headless') driver = webdriver.Chrome(options=options) driver.get("動的なwebサイト") def get_date(requests): selector = '<a>タグの要素' element = driver.find_elements_by_css_selector(selector) element = [a.get_attribute("href") for a in element] date_element = "<span>タグの要素" dates = driver.find_elements_by_css_selector(date_element) arry = [] arry.append(element) arry.append(dates) Post(Company, title=element) Company(Company, name="企業") for i in arry: i.append(element) i.append(dates) context = {'links': element, 'dates': dates} return render(requests, 'new/index.html', context)
該当のソースコード
new/models.py
from django.db import models from django.utils import timezone from django.contrib.auth.models import User # Create your models here. class Company(models.Model): class Meta: db_table = 'kigyou' name = models.CharField(verbose_name='企業名', max_length=255) def __str__(self): return self.name class Post(models.Model): class Meta: db_table = 'advertisement' title = models.CharField(verbose_name='リンク', max_length=255) publisher = models.ForeignKey(Company, on_delete=models.CASCADE) # publish_date = models.DateTimeField(verbose_name='日付') def __str__(self): return self.title
該当のソースコード
templates/new/index.html
<!DOCTYPE html> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> {% for link in links %} {{ link }} {% endfor %} <p>--------------------------------------------</p>> {% for datess in dates %} {{ datess }} {% endfor %} </body>
試したこと
他サイトをいろいろ見ているのですが、検索ワードが悪いのか実現に近いサイトが見つけれません。
補足情報(FW/ツールのバージョンなど)
mac10.15.3
Python3.8.5
Django3.1
あなたの回答
tips
プレビュー