Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python/Django仅提取和附加新链接_Python_Django - Fatal编程技术网

Python/Django仅提取和附加新链接

Python/Django仅提取和附加新链接,python,django,Python,Django,我正在使用Windows7上的Python2.7Django1.5编写一个项目。 我有以下看法: views.py: def foo(): site = "http://www.foo.com/portal/jobs" hdr = {'User-Agent' : 'Mozilla/5.0'} req = urllib2.Request(site, headers=hdr) jobpass = urllib2.urlopen(req) soup = Beau

我正在使用Windows7上的Python2.7Django1.5编写一个项目。 我有以下看法:

views.py:

def foo():
    site = "http://www.foo.com/portal/jobs"
    hdr = {'User-Agent' : 'Mozilla/5.0'}
    req = urllib2.Request(site, headers=hdr)
    jobpass = urllib2.urlopen(req)
    soup = BeautifulSoup(jobpass)
    for tag in soup.find_all('a', href = True):
        tag['href'] = urlparse.urljoin('http://www.businessghana.com/portal/',  tag['href'])
    return map(str, soup.find_all('a', href = re.compile('.getJobInfo')))

def example():
    site = "http://example.com"
    hdr = {'User-Agent' : 'Mozilla/5.0'}
    req = urllib2.Request(site, headers=hdr)
    jobpass = urllib2.urlopen(req)
    soup = BeautifulSoup(jobpass)
    return map(str, soup.find_all('a', href = re.compile('.display-job')))

 foo_links = foo()
 example_links = example()

def all_links():
    return (foo_links + example_links)

def display_links(request):
    name = all_links()
    paginator = Paginator(name, 25)
    page = request.GET.get('page')
    try:
        name = paginator.page(page)
    except PageNotAnInteger:
        name = paginator.page(1)
    except EmptyPage:
        name = paginator.page(paginator.num_pages)

    return render_to_response('jobs.html', {'name' : name})    
我的模板如下所示:

<ol>
{% for link in name %}
  <li> {{ link|safe }}</li>
{% endfor %}
 </ol>
 <div class="pagination">
<span class= "step-links">
    {% if name.has_previous %}
        <a href="?page={{ names.previous_page_number }}">Previous</a>
    {% endif %}

    <span class = "current">
        Page {{ name.number }} of {{ name.paginator.num_pages}}.
    </span>

    {% if name.has_next %}
        <a href="?page={{ name.next_page_number}}">next</a>
    {% endif %}
</span>
 </div>
from django.db import models

class jobLinks(models.Model):
    links = models.URLField()
    pub_date = models.DateTimeField('date retrieved')

    def __unicode__(self):
        return self.links
如有任何帮助/提示/参考,将不胜感激

问候,,
Max

我建议构建URL表,并在表中设置一个日期字段用于排序,以便按照您描述的分页方式,首先列出您最近的URL。您的URL表可能如下所示:

models.py:

class URL_Table(models.Model):
  date = models.DateField(auto_add_now=True)
  url = models.URLField()
您可以按日期降序排序,并将其链接到
views.py中的视图:

urls = URL_Table.objects.order_by('-date')
然后,您可以引用此表以查看URL是否已经存在。如果它是一个新的URL,则将其保存到表中

您还可以在
views.py
view函数中重写
get()
,以便在页面加载时执行某些操作,或者在python中使用
django.utils.timezone
datetime.datetime
构建一个
自定义模型方法,该方法仅在URL存在一周以上时执行某种URL维护

更新:

如果要检查已保存到表中的链接,并且只保存新链接,请调用所有链接并检查与新链接的对比。您可以选择仅显示上周使用timedelta创建的链接。所以我建议在这里使用两个函数

使用此功能检查新链接,并仅保存新链接:

def save_new_links(all_links):
  current_links = joblink.objects.all()
  for i in all_links:
    if i not in current_links:
      joblink.objects.create(url=i)
然后使用timedelta调用上周的所有链接

def this_weeks_links(all_links):
  return joblinks.objects.filter(date__gte=datetime.timedelta(days=-7))
然后将这些函数插入视图,使#1仅保存新链接,而#2仅显示上周保存的第一页链接


祝你好运

我目前创建了一个模型,我在上面的问题中更新了这个模型。我现在需要保存
显示链接(请求)
视图生成的数据。我搜索了又搜索,但我找到的只是保存表单中的数据。你能帮我吗?谢谢您需要将
显示链接(请求)
中的数据保存为模型实例。因此,如果模型名为
Site
,则将其另存为
Site=Site.objects.create(name=name,Site=Site)
这些是字段的示例名称,但关键是将信息另存为模型实例,以便将其保存到数据库中。或者使用现有站点模型实例,对其进行更新,然后使用方法
.save()
保存所做的更改。希望有帮助。好的,阅读我的更新。这应该会有帮助。如果您还需要什么,请告诉我。如果所有内容都返回“jobs.links.objects.all”,则您的数据库不能为空。你能添加你当前的视图代码吗,这样我就可以看一看了?请重新阅读我更新的代码。您没有将所有代码复制到您的Pastebin.com页面。此外,您还需要导入datetime以使用该函数,并从主显示视图内部调用这些函数。