游戏计划是提取这些主要图像,并将其显示在索引页面的缩略图中。我对这个功能有很多麻烦,似乎互联网上没有这个功能的例子。 我找到了三个选择 1. beautifulsoup //似乎人们最常使用这种方法,但我不知道美丽如何找到代表性的形象...它也需要我认为最多的工作。 2. python goose //看起来合法。文档说它提取主要图像,我想我需要相信他们的话。问题是我不知道如何在django中使用它。 3. embedly // ....也许是我需要的功能的错误选择。我想在这个项目中使用python goose。 我的问题是你如何解决这个问题?你知道任何一个例子还是可以提供一些我可以看的例子?从用户提供到我的页面的图像中提取图像我可以使用sorl-thumbnail(对吗?_)但是对于发布的链接.... ??
Edit1:使用python goose,似乎(主要)图像抓取非常简单。问题是我不确定如何将脚本用于我的应用程序,我应该如何将该图像转换为右图标并显示在我的index.html上... 这是我的media.py(不确定它是否有效
496
来源:https://blog.openshift.com/day-16-goose-extractor-an-article-extractor-that-just-works/ 博客的例子是使用flask,我试图为使用django的人制作脚本
编辑2:好的,这是我的方法。我认为这是对的,但不幸的是它并没有给我任何东西。没有错误或没有图像,但python语法是正确的....如果有人为什么它不工作请告诉我
Models.py
类Post(models.Model): url = models.URLField(max_length = 250,blank = True,null = True)
import json
from goose import Goose
def extract(request):
url = request.args.get('url')
g = Goose()
article = g.extract(url=url)
resposne = {'image':article.top_image.src}
return json.dumps(resposne)
的index.html
def extract(request, url):
url = requests.POST.get('url')
g = Goose()
article = g.extract(url=url)
resposne = {'image':article.top_image.src}
return json.dumps(resposne)
答案 0 :(得分:3)
BeautifulSoup将是实现这一目标的方式,实际上非常容易。
首先,HTML中的图像如下所示:
<img src="http://www.url.to/image.png"></img>
我们可以使用BeautifulSoup提取所有img
代码,然后找到src
代码的img
。这可以通过以下方式实现。
from bs4 import BeautifulSoup #Import stuff
import requests
r = requests.get("http://www.site-to-extract.com/") #Download website source
data = r.text #Get the website source as text
soup = BeautifulSoup(data) #Setup a "soup" which BeautifulSoup can search
links = []
for link in soup.find_all('img'): #Cycle through all 'img' tags
imgSrc = link.get('src') #Extract the 'src' from those tags
links.append(imgSrc) #Append the source to 'links'
print(links) #Print 'links'
我不知道您打算如何决定使用哪个图片作为缩略图,但您可以通过网址列表并提取您想要的图片。
<强>更新强>
我知道你说dJango,但我强烈推荐Flask。它更简单,但仍然非常实用。
我写了这个,它只显示你给它的任何网页的第一张图片。
from bs4 import BeautifulSoup #Import stuff
import requests
from flask import Flask
app = Flask(__name__)
def getImages(url):
r = requests.get(url) #Download website source
data = r.text #Get the website source as text
soup = BeautifulSoup(data) #Setup a "soup" which BeautifulSoup can search
links = []
for link in soup.find_all('img'): #Cycle through all 'img' tags
imgSrc = link.get('src') #Extract the 'src' from those tags
links.append(imgSrc) #Append the source to 'links'
return links #Return 'links'
@app.route('/<site>')
def page(site):
image = getImages("http://" + site)[0] #Here I find the 1st image on the page
if image[0] == "/":
image = "http://" + site + image #This creates a URL for the image
return "<img src=%s></img>" % image #Return the image in an HTML "img" tag
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0") #Run the Flask webserver
上的网络服务器
要输入网站,请执行http://localhost:5000/yoursitehere,例如http://localhost:5000/www.google.com