Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >同时从url中抓取图像

同时从url中抓取图像
EN

Stack Overflow用户
提问于 2014-01-24 06:03:14
回答 4查看 1.6K关注 0票数 0

我没有做太多的线程处理,但我想知道我是否可以同时保存图片在网页上,而不是一次一个。

目前,我的代码执行后一种方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while pageCount <= 5:
soup = BeautifulSoup(urllib2.urlopen("http://www.url.../%d" % pageCount))

for link in soup.find_all("div", class_="photo"):
    pic = link.findAll('img')
    url = re.search("(?P<url>https?://[^\s]+\.(?:jpe?g))", str(pic)).group("url") 
    count +=1 
    urllib.urlretrieve(url,'C:\Desktop/images/pics%s.jpg' % count)
pageCount +=1 

我在想,这个过程可以通过采用多线程方法来加速,但不确定如何进行。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-24 06:09:21

刮痕是并行的,并且已经准备好使用图像下载中间件

票数 4
EN

Stack Overflow用户

发布于 2014-01-24 07:01:04

Python中的多线程只会使脚本在IO由于GIL而阻塞时更快,任何CPU/IO密集型应用程序都不太可能看到性能的提高(如果有的话,它们可能会变慢)。

我已经为不同站点的大小编写了刮板(有些站点的大小与8+ TB一样大)。Python将很难在单个脚本上获得完整的行速率,您最好的选择是使用一个适当的作业队列(如celery),然后运行多个工作人员来实现并发。

如果您不想要celery,那么另一种麻木不仁的方法是使用subprocess调用多个curl/wget/axel实例,然后阻塞它们直到它们返回,检查退出代码,检查文件是否存在等等。然而,如果您的脚本没有干净地退出,那么您就会出现僵尸进程(即即使在您关闭脚本之后下载也会继续)。如果您不喜欢subprocess的想法,那么您可以使用类似eventletgevent之类的东西,但是在单个脚本上不能达到全行率,那么您必须运行多个工作人员。

有些站点有速率限制,因此使用作业队列通常是一种很好的解决方法(例如,许多带有随机IP的EC2实例),每个站点都有X个工作人员,以获得最大的吞吐量。

Python是一个非常好的工具,可以抓取大量的数据,您只需要正确地完成它。

此外,在许多情况下,pyquery比BeautifulSoup处理结果的速度快得多。至少,不要依赖BeautifulSoup库为您请求数据。使用类似于python-requests的方法来获取结果,然后将其传递到解析器中(如soup或pyquery等)。

如果您计划抓取/存储大量数据,例如处理作业和下载内容时的带宽优化,也需要考虑可伸缩性。有一些存储集群允许您将URL发送到它们的API,它们负责为您下载内容。这节省了浪费带宽下载,然后上传文件到你的后端-这可以削减你的带宽费用的一半。

值得一提的是,threading+BeautifulSoup已经被讨论过了;

Urllib2 & BeautifulSoup :不错的一对,但是太慢了- urllib3和线程?

票数 4
EN

Stack Overflow用户

发布于 2014-01-24 06:30:22

如果您正在寻找DIY解决方案,请使用这些方法:

我想您可以用池在整个soup.findall()上映射您的循环体。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21334624

复制
相关文章
通过Url抓取网页内容
本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。
Java架构师必看
2021/03/22
1.7K0
URL Extractor mac(URL地址抓取工具)激活版
想要毫不费力的批量提取URL资源吗?URL Extractor 4 for Mac是Mac平台一款链接批量抓取工具,通过一个网址或是通过搜索引擎搜索一个关键字,就能为我们抓取大量相关的网址链接和emAIl信息。
Mac小小
2022/08/14
9450
从 LSASS 进程中抓取 NTLM 哈希
将 DLL 上传到目标机器。然后它使远程注册表能够修改 AutodialDLL 条目并启动/重新启动 BITS 服务。Svchosts 将加载我们的 DLL,再次将 AutodiaDLL 设置为默认值并执行 RPC 请求以强制 LSASS 加载与安全支持提供程序相同的 DLL。一旦 DLL 被 LSASS 加载,它将在进程内存中搜索以提取 NTLM 哈希和密钥/IV。
Khan安全团队
2023/02/23
9620
从 LSASS 进程中抓取 NTLM 哈希
如何从 100 亿 URL 中找出相同的 URL?
来源 | https://doocs.github.io/advanced-java/ 题目描述 给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G。请找出 a、b 两个文件共同的 URL。 解答思路 每个 URL 占 64B,那么 50 亿个 URL占用的空间大小约为 320GB。 5, 000, 000, 000 * 64B ≈ 5GB * 64 = 320GB 由于内存大小只有 4G,因此,我们不可能一次性把所有 URL 加载到内存中处理。对于这种类型的题
程序猿DD
2023/04/04
2.9K0
如何从 100 亿 URL 中找出相同的 URL?
java url抓取文件到本地
package socket; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.ut
葫芦
2019/05/09
1.6K0
OpenCV中如何读取URL图像文件
最近知识星球收到的提问,觉得是一个很有趣的问题,就通过搜集整理归纳了一番,主要思想是通过URL解析来生成数据,转为图像/Mat对象。但是在Python语言与C++语言中的做法稍有不同。
OpenCV学堂
2019/07/19
5.9K0
面试:如何从 100 亿 URL 中找出相同的 URL?
给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G。请找出 a、b 两个文件共同的 URL。
后端码匠
2020/09/07
4.6K0
面试:如何从 100 亿 URL 中找出相同的 URL?
给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G。请找出 a、b 两个文件共同的 URL。
开发者技术前线
2020/11/24
2.3K0
面试:如何从 100 亿 URL 中找出相同的 URL?
图像处理中C++如何同时返回多个值
1 . pair<T,T> 返回两个值 //返回两个值的情况 pair<vector<double>,int> R_R(Mat& img) { int n=img.rows; vector<double> a; unsigned int m=img.cols; unsigned int k=img.rows; for(unsigned int i=0;i<m;i++) { for(unsigned int j=0;j<k;j++)
用户9831583
2022/06/16
7820
面试经历:如何从 100 亿 URL 中找出相同的 URL?
给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G。请找出 a、b 两个文件共同的 URL。
二哥聊运营工具
2021/12/17
1.9K0
django-URL之从URL中获取关键字(七)
主要用于查询操作。 主要目录 book/views.py from django.http import HttpResponse from django.shortcuts import rend
西西嘛呦
2020/08/26
1.8K0
python:如何从 URL 中快速提取域名?
有时候,我们要从一段很长的 URL 里面提取出域名。例如从https://www.kingname.info/2020/10/02/copy-from-ssh/,我需要获取的是kingname.info。
王图思睿
2021/06/16
9.1K0
抓取网页的含义和URL基本构成
抓取网页是指通过爬虫程序从互联网上获取网页的内容和数据。抓取网页是爬虫的核心功能之一,通过抓取网页,可以获取到网页中的文本、图片、链接等信息,用于后续的数据分析、挖掘和应用。
用户614136809
2023/10/24
3500
实验:用Unity抓取指定url网页中的所有图片并下载保存
突发奇想,觉得有时保存网页上的资源非常麻烦,有没有办法输入一个网址就批量抓取对应资源的办法呢。
汐夜koshio
2020/03/19
3.4K0
Java爬虫(3)——拼接url抓取“加载更多”内容
上期我们说到phantomjs可模拟点击按钮行为,通过点击完所有”加载更多”按钮来抓所有内容。比如这个网页http://e.vnexpress.net/news/news
一头小山猪
2020/04/10
1.5K0
python爬虫图片抓取(python从网络上抓取照片)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128295.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/28
1.6K0
python爬虫图片抓取(python从网络上抓取照片)
URL中的#
作者:阮一峰   http://www.ruanyifeng.com/blog/2011/03/url_hash.html
超然
2018/08/03
1.8K0
从获取URL参数到JS URL()和URLSearchParams() 接口
获取URL参数有有2中,一直是split 切片,一种是正则表达式匹配。这个是传统方法。
周陆军博客
2023/05/07
5.3K0
js从 URL 获取查询参数
从 URL 获取查询参数 <script> function getParameterByName(name, url) { if (!url) url
江一铭
2022/06/16
10.5K0
从URL开始,定位世界 | 洞见
从我们输入URL并按下回车键到看到网页结果之间发生了什么?换句话说,一张网页,要经历怎样的过程,才能抵达用户面前?下面来从一些细节上面尝试一下探寻里面的秘密。 ---- 前言:键盘与硬件中断 说到输入URL,当然是从手敲键盘开始。对于键盘,生活中用到的最常见的键盘有两种:薄膜键盘、机械键盘。 薄膜键盘:由面板、上电路、隔离层、下电路构成。有外观优美、寿命较长、成本低廉的特点,是最为流行的键盘种类。键盘中有一整张双层胶膜,通过胶膜提供按键的回弹力,利用薄膜被按下时按键处碳心于线路的接触来控制按键触发。 机械
ThoughtWorks
2018/04/17
9170
从URL开始,定位世界 | 洞见

相似问题

使用Scrapy从图像中抓取url

20

使用php从url中抓取图像

27

无法从网站抓取图像url

249

从页面抓取图像,url,描述

14

从图像URL抓取文件名

410
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文