如何构建我的Django Web抓取项目?

时间:2019-01-30 12:14:22

标签: python django web-scraping beautifulsoup

我对编程还很陌生,但是在Django中构建项目时仍然遇到一些问题。 我正在设置一个Web抓取应用程序,我的目标是可视化抓取的数据并以不同类型的图返回它。

此刻,我已经在views.py文件中抓取了代码。

我的问题是:这种应用程序是否有首选的目录结构?

我在想:

-在新的scrape.py中设置抓取代码

-设置模型以将数据提供给models.py

-在views.py

中设置可视化代码

这是我的views.py atm:

from django.shortcuts import render
from django.views.generic import TemplateView

import requests
from bs4 import BeautifulSoup


def PlayerDetailView(request):

    first_name = 'Drew'
    last_name = 'Brees'
    last_name_first_letter = last_name[0]
    last_name_first_four = last_name[0:4]
    first_name_first_two = first_name[0:2]


    page = requests.get('https://www.pro-football-reference.com/players/{}/{}{}00.htm'.format(last_name_first_letter,                                                                                            last_name_first_four,                                                                                                                                first_name_first_two))


    content = page.content

    week_number = 251
    stats = soup.find("tr", {"id": "stats.{}".format(week_number)})

    stats_relevant = ['pass_yds', 'pass_td', 'rush_yds']
    stat_list = []


for stat in stats_relevant:
    stat_list.append(int(list(stats.find("td", {"data-stat": "{}".format(stat)}).children)[0]))

dic_list = {'tag':stat_list}
    return render(request,'league_app/player.html', context=dic_list)

提前谢谢!

2 个答案:

答案 0 :(得分:0)

首先创建数据模型以保存抓取的数据, 然后使用任务队列使用Celery来抓取数据,然后将其存储在数据库中。 使用数据库中的数据可视化数据。

答案 1 :(得分:0)

我最近一直在Flask中从事网络抓取项目,并通过Flask将抓取功能作为可调用的API提供服务。这样,根据您的喜好,我可以通过curl调用或带有少量JavaScript的简单前端轻松测试API和功能。

因此,在上述情况下,我们可以:

  • “ scraping.py”中的抓取功能
  • “ controller.py”中的服务器(Django或Flask)代码
  • “ models.py”中的数据库或数据结构代码
  • (可选)相关HTML,CSS和JavaScript文件中的网站代码

一旦一些功能被路由到URI,您就可以通过调用“ controller.py”文件来启动服务器并进行如下API调用:

curl -o output.json http://localhost:5000/getjson

我会更多地研究curl的力量,特别是出于快速发展的目的。就个人而言,我在https://docs.python-guide.org/上发现了大量有关正确程序结构的信息。它涵盖了几乎所有您能想到的细节。希望这会有所帮助!