我在文件中有一组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或任何其他语言。有什么建议吗?
编辑:所以......遇到了网址需要身份验证才能访问的问题。这很好,但问题是它是两步验证,第二步是发送到移动设备的密码。 :-(但感谢你的帮助!
答案 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.image
是extracted.images
的第一项(如果存在)或None
答案 2 :(得分:0)
这是我最终绕过两步验证的做法。请注意,对于我登录其中一个URL并在登录时单击“记住我”选项的URL,这将避免以下方法的登录页面。
剩下的就是根据名称重命名文件(如果你按照相同的顺序保存网址,文件按照与名称顺序一致的顺序编号),但这应该是基本的。