从一组URL下载单独的图像

时间:2014-01-18 01:52:34

标签: python html web-scraping

我在文件中有一组URL和名称,如下所示:

www.test.yom/something/somethingelse/Profile.aspx?id=1
John Doe
www.test.yom/something/somethingelse/Profile.aspx?id=24
John Benjamin
www.test.yom/something/somethingelse/Profile.aspx?id=307
Benjamin Franklin
....

每个URL页面包含普通的html和任意数量的文本,表格等,但标签中总是有1个图像。

我的目标是以某种方式将此图像下载到我的驱动器,用第二行名称重命名(即“John Doe.jpg”和“John Benjamin.jpg”)。

有没有简单的方法来实现这一目标?我使用UNIX命令(grep,tr,sed)在不同页面上从原始HTML解析出URL-Name文件,但我猜这将需要更复杂的东西。现在我正在考虑Python脚本,但我不确定要查看哪些库或从哪里开始(尽管我熟悉Python语言本身)。如果能让这个过程更容易,我也会使用Java或任何其他语言。有什么建议吗?

编辑:所以......遇到了网址需要身份验证才能访问的问题。这很好,但问题是它是两步验证,第二步是发送到移动设备的密码。 :-(但感谢你的帮助!

3 个答案:

答案 0 :(得分:2)

您可以将链接放在列表或文件中,然后使用requests获取html,然后使用BeautifulSoup查找所需图片,提取src属性并使用请求再次下载该文件。这两个库都非常简单易用,你可以在编写这个简单的脚本时遇到问题:)。

伪代码可以帮助您入手:

url_list = ['url1', 'url2']
for url in url_list:
    html = requests.get(url)
    soup = BeautifulSoup(html)
    img_element = soup.find('img')
    image_url = img_element['src']
    requests.download(image_url) # Not sure how to download this to a file

答案 1 :(得分:1)

您可以将extraction模块与requests模块一起使用:

pip install requests
pip install extraction

然后:

import extraction
import requests

url = "http://google.com/"
html = requests.get(url).text

extracted = extraction.Extractor().extract(html, source_url=url)

print(extracted.image) # If you know that there is only one image in your page
print(extracted.images) # List of images on page

http://google.com/images/srpr/logo9w.png
['http://google.com/images/srpr/logo9w.png']

请注意,source_url在提取中是可选的,但建议它可以将相对网址和图片网址重写为绝对路径。

extracted.imageextracted.images的第一项(如果存在)或None

答案 2 :(得分:0)

这是我最终绕过两步验证的做法。请注意,对于我登录其中一个URL并在登录时单击“记住我”选项的URL,这将避免以下方法的登录页面。

  1. 在Firefox上下载“保存图片”扩展程序。重启Firefox。
  2. 在工具中 - > “保存图片” - >选项。转到“保存”标签。在“文件夹选项”中,选择要保存文件的文件夹。在“文件名”中,选择“使用文件名:”。输入适当的文件名。
  3. 转到Firefox(不是Chrome)中的“http://tejji.com/ip/open-multiple-urls.aspx”。
  4. 仅将网址复制并粘贴到文本框中。点击“提交”。加载所有选项卡后,关闭tejji.com选项卡。
  5. 在第一个个人资料页面上,右键单击 - > “保存图片” - > “保存所有标签中的图像”。
  6. 如果一切正常,请关闭“保存”提示。
  7. 现在所有图片都应该在指定的文件夹中。
  8. 剩下的就是根据名称重命名文件(如果你按照相同的顺序保存网址,文件按照与名称顺序一致的顺序编号),但这应该是基本的。