Ich habe eine Funktion, die Beiträge schabt und speichert in meiner Datenbank.wenn scraping mein Programm hält, weil unique = True und kratzt nicht die nicht-Duplikate
def scrape_and_store_world():
url = 'http://www.example.org'
html = requests.get(url, headers=headers)
soup = BeautifulSoup(html.text, 'html5lib')
titles = soup.find_all('section', 'box')[:9]
entries = [{'href': url + box.a.get('href'),
'src': box.img.get('src'),
'text': box.strong.a.text,
} for box in titles]
for entry in entries:
post = Post()
post.title = entry['text']
post.image_url = entry['src']
post.status = 'published'
post.save()
return entries
es werden die neuesten 9 Beiträge kratzen, aber wenn ich es laufen wieder wird es Probleme verursachen mir zu sagen, dass ein Post bereits vorhanden und es wird Schaben stoppen. Ich möchte die neueste scrape und einfach über die Duplikate überspringen, ohne dass mein Programm stockt. Was ist die richtige Syntax, dass
EDIT zu tun: Die Fehlermeldung I
duplicate key value violates unique constraint "blog_post_title_adf2f203_uniq"
DETAIL: Key (title)=(Nightclub On Wheels: NYC Uber Driver Puts On A Party For His Passengers!) already exists.
mein models.py
class Post(models.Model):
STATUS_CHOICES = (
('draft', 'Draft'),
('published', 'Published'),
)
title = models.CharField(max_length=250, unique=True)
mein view.py
def noindex(request):
scrape_and_store_world()
template = "blog/post/noindex.html"
context = {
}
return render(request, template, context)
hilft Es ist schwierig, Ihnen zu helfen, weil wir nicht Ihr Beispiel ausprobieren können, wie es ist, und Sie nicht die vollständigen Zurückverfolgungs posten. – Chris
@Chris Ich habe weitere Informationen hinzugefügt. Brauche ich noch etwas? – losee
Sie werden wegen dem, was ich im ersten Kommentar gesagt habe, abgelehnt. Wenn wir Ihren Code nicht auf unserer eigenen Maschine ausführen können oder der Fehler nicht sehr offensichtlich ist, ist es fast unmöglich für uns, die Antwort für Sie zu erraten. – Chris