- 浏览: 374746 次
- 性别:
- 来自: 四川
文章分类
- 全部博客 (247)
- 数据库以及sql (11)
- java (48)
- 爬虫学习 (20)
- java编程 (28)
- python编程以及安装和配置 (27)
- oracle数据库 (32)
- mongodb基本操作 (4)
- linux学习 (7)
- easyUI (2)
- nodeJs (8)
- python学习 (16)
- 其他 (13)
- hadoop (1)
- svn (1)
- 汉字 (1)
- windows (2)
- jsp (5)
- fiddler (1)
- ETL (1)
- teamviewer (1)
- maven (4)
- GIT (2)
- datagrip (1)
- ocr (1)
- redis (3)
- mysql (3)
- linux (1)
- 数据服务 (0)
最新评论
# coding=utf-8
'''
Created on 2017年5月16日
@author: chenkai
Python多线程爬取某单无聊图图片地址(requests+BeautifulSoup+threading+Queue模块)
'''
import requests
from bs4 import BeautifulSoup
import threading
import Queue
import time
class Spider_Test(threading.Thread):
def __init__(self,queue):
threading.Thread.__init__(self)
self.__queue = queue
def run(self):
while not self.__queue.empty():
page_url=self.__queue.get() #从队列中取出url
print page_url
self.spider(page_url)
def spider(self,url):
r=requests.get(url) #请求url
soup=BeautifulSoup(r.content,'lxml') #r.content就是响应内容,转换为lxml的bs对象
imgs = soup.find_all(name='img',attrs={}) #查找所有的img标签,并获取标签属性值(为列表类型)
for img in imgs:
if 'onload' in str(img): #img属性集合中包含onload属性的为动态图.gif,
print 'http:'+img['org_src']
else:
print 'http:'+img['src']
def main():
queue=Queue.Queue()
url_start = 'http://jandan.net/pic/page-'
for i in range(293,295):
url = url_start+str(i)+'#comment'
queue.put(url) #将循环拼接的url放入队列中
threads=[]
thread_count=2 #默认线程数(可自动修改)
for i in range(thread_count):
threads.append(Spider_Test(queue))
for i in threads:
i.start()
for i in threads:
i.join()
if __name__ == '__main__': #在.py文件中使用这个条件语句,可以使这个条件语句块中的命令只在它独立运行时才执行
time_start = time.time()
main() #调用main方法
print time.time()-time_start
#背景知识
'''
q = Queue.Queue(maxsize = 10)
Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。
将一个值放入队列中
q.put(10)
调用队列对象的put()方法在队尾插入一个项目。put()有两个参数,第一个item为必需的,为插入项目的值;第二个block为可选参数,默认为
1。如果队列当前为空且block为1,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为0,put方法将引发Full异常。
将一个值从队列中取出
q.get()
调用队列对象的get()方法从队头删除并返回一个项目。可选参数为block,默认为True。如果队列为空且block为True,get()就使调用线程暂停,直至有项目可用。如果队列为空且block为False,队列将引发Empty异常。
'''
如果想要下载图片需要
import urllib
再替换spider方法即可
def spider(self,url):
r=requests.get(url)
soup=BeautifulSoup(r.content,'lxml')
imgs = soup.find_all(name='img',attrs={})
urls=[]
for img in imgs:
if 'onload' in str(img):
print 'http:'+img['org_src']
urls.append('http:'+img['org_src'])
else:
print 'http:'+img['src']
url = urls.append('http:'+img['src'])
#下载图片
k=0
for urlitem in urls:
k+=1
if '.jpg' in urlitem:
urllib.urlretrieve(url=urlitem,filename='F:\image\\'+str(k)+'.jpg')
-----------多线程访问百度实例
#coding:utf-8
import requests
import threading
import time
import sys
url = 'https://www.baidu.com'
def get_baidu():
global url
time_start = time.time()
r = requests.get(url=url)
times = time.time()-time_start
sys.stdout.write('status:%s time:%s current_time:%s\n'%(r.status_code,times,time.strftime('%H:%M:%S')))
def main():
threads = []
thread_count = 10
for i in range(thread_count):
t = threading.Thread(target=get_baidu,args=())
threads.append(t)
for i in range(thread_count):
threads[i].start()
for i in range(thread_count):
threads[i].join()
if __name__=='__main__':
main()
'''
Created on 2017年5月16日
@author: chenkai
Python多线程爬取某单无聊图图片地址(requests+BeautifulSoup+threading+Queue模块)
'''
import requests
from bs4 import BeautifulSoup
import threading
import Queue
import time
class Spider_Test(threading.Thread):
def __init__(self,queue):
threading.Thread.__init__(self)
self.__queue = queue
def run(self):
while not self.__queue.empty():
page_url=self.__queue.get() #从队列中取出url
print page_url
self.spider(page_url)
def spider(self,url):
r=requests.get(url) #请求url
soup=BeautifulSoup(r.content,'lxml') #r.content就是响应内容,转换为lxml的bs对象
imgs = soup.find_all(name='img',attrs={}) #查找所有的img标签,并获取标签属性值(为列表类型)
for img in imgs:
if 'onload' in str(img): #img属性集合中包含onload属性的为动态图.gif,
print 'http:'+img['org_src']
else:
print 'http:'+img['src']
def main():
queue=Queue.Queue()
url_start = 'http://jandan.net/pic/page-'
for i in range(293,295):
url = url_start+str(i)+'#comment'
queue.put(url) #将循环拼接的url放入队列中
threads=[]
thread_count=2 #默认线程数(可自动修改)
for i in range(thread_count):
threads.append(Spider_Test(queue))
for i in threads:
i.start()
for i in threads:
i.join()
if __name__ == '__main__': #在.py文件中使用这个条件语句,可以使这个条件语句块中的命令只在它独立运行时才执行
time_start = time.time()
main() #调用main方法
print time.time()-time_start
#背景知识
'''
q = Queue.Queue(maxsize = 10)
Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。
将一个值放入队列中
q.put(10)
调用队列对象的put()方法在队尾插入一个项目。put()有两个参数,第一个item为必需的,为插入项目的值;第二个block为可选参数,默认为
1。如果队列当前为空且block为1,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为0,put方法将引发Full异常。
将一个值从队列中取出
q.get()
调用队列对象的get()方法从队头删除并返回一个项目。可选参数为block,默认为True。如果队列为空且block为True,get()就使调用线程暂停,直至有项目可用。如果队列为空且block为False,队列将引发Empty异常。
'''
如果想要下载图片需要
import urllib
再替换spider方法即可
def spider(self,url):
r=requests.get(url)
soup=BeautifulSoup(r.content,'lxml')
imgs = soup.find_all(name='img',attrs={})
urls=[]
for img in imgs:
if 'onload' in str(img):
print 'http:'+img['org_src']
urls.append('http:'+img['org_src'])
else:
print 'http:'+img['src']
url = urls.append('http:'+img['src'])
#下载图片
k=0
for urlitem in urls:
k+=1
if '.jpg' in urlitem:
urllib.urlretrieve(url=urlitem,filename='F:\image\\'+str(k)+'.jpg')
-----------多线程访问百度实例
#coding:utf-8
import requests
import threading
import time
import sys
url = 'https://www.baidu.com'
def get_baidu():
global url
time_start = time.time()
r = requests.get(url=url)
times = time.time()-time_start
sys.stdout.write('status:%s time:%s current_time:%s\n'%(r.status_code,times,time.strftime('%H:%M:%S')))
def main():
threads = []
thread_count = 10
for i in range(thread_count):
t = threading.Thread(target=get_baidu,args=())
threads.append(t)
for i in range(thread_count):
threads[i].start()
for i in range(thread_count):
threads[i].join()
if __name__=='__main__':
main()
发表评论
-
python中将unicode(u'\u7684') 转中文字符
2018-08-16 16:16 4018ddd=u'\u7684' ddd=ddd.encode(&q ... -
python中的开放运算
2017-07-06 09:39 1046要点: 将整数用浮点数表示:由于Python的整数除法,为了 ... -
eclipse创建scrapy项目
2017-05-12 17:23 10581. 您必须创建一个新的Scrapy项目。 进入您打算存储代码 ... -
windows安装scrapy框架步骤
2017-05-12 13:05 611Scrapy简介 Scrapy是一个快速,高效的网页抓取Pyt ... -
python操作mongoDB
2017-05-12 10:04 1058#coding=utf-8 from pymongo impo ... -
windows下安装Scrapy框架(python)
2017-03-22 14:39 7551、下载安装Python2.7.6, ... -
python "\xc5\xc0\xb3\xe6" 转汉字
2017-03-10 10:10 5358print "\xc5\xc0\xb3\xe6&qu ... -
python_GUI应用程序代码
2017-03-03 10:06 668# coding=utf-8 ''' Created on 2 ... -
python读写excel
2017-03-03 10:05 1056# coding=utf-8 ''' Created on 2 ... -
python标准异常分类
2017-03-01 16:09 447ppython标准异常分类 BaseException ... -
python在linux、windows下执行命令的方法
2017-02-22 16:52 1058windows下: import os cmdres= os. ... -
python中selenium 滚动条下拉 操作
2017-02-22 11:16 6753方法一)使用js脚本直接操作,方法如下: js=" ... -
python+BeautifulSoup+selenium+mysqldb完成数据抓取
2017-02-21 14:28 932# coding=utf-8 ''' Created on 2 ... -
python+selenium浏览器调用(chrome、ie、firefox)
2017-02-20 14:35 1954#coding=utf-8 from selenium im ... -
windows下安装beautifulsoup
2017-02-14 10:57 8761.去beautiful soup官网上去下载最新版本是4.3 ... -
windows下casperjs安装以及配置
2017-02-14 10:20 417下载casperjs,解压后命名为casperjs 添加环境变 ... -
wingdows下安装phantomjs
2017-02-14 10:19 425下载phantomjs后解压,重命名为phantomjs 添加 ... -
python下安装beautifulsoup4-4.3.1
2017-02-07 16:18 5951.去beautiful soup官网上去下载最新版本是4.3 ... -
python中的正则表达式,python
2017-02-07 10:20 657# coding=utf-8 ''' Created on 2 ... -
python时间格式
2017-01-17 10:35 4961. 日期输出格式化 datetime => strin ...
相关推荐
这个版本2.0可能意味着开发者对之前的版本进行了优化,可能增加了多线程下载、错误处理等功能,以提高效率和鲁棒性。 总的来说,Python爬虫技术结合了网络请求、HTML解析、文件操作等多个方面,通过编写合适的脚本...
然而,实际的爬虫可能需要处理更多复杂情况,如处理JavaScript渲染的页面、登录验证、反爬机制、多线程或异步下载等。在编写爬虫时,应遵循网站的robots.txt文件指示,尊重网站的使用政策,并确保你的爬虫活动符合...
Python爬虫中多线程的使用对于提升爬取效率至关重要,特别是在处理大量数据或网络请求时。本篇文章将深入探讨如何在Python爬虫项目中利用多线程和`queue`库来实现高效的并发处理。 首先,`queue`是Python的标准库,...
为了提高搜索效率,`python_imagesearch`可能会提供一些优化选项,比如设置匹配的阈值,或者使用多线程进行并行搜索。开发者可以根据具体需求调整这些参数,以平衡搜索精度和速度。 5. **应用实例** 在自动化测试...
在本项目中,我们主要探讨如何使用Python的PyQt库构建用户界面,并通过子线程防止界面卡死,同时结合selenium自动化工具进行多进程图片爬取。这是一套高效且用户友好的图像抓取解决方案。 首先,PyQt是Python语言...
3. **多线程下载**:为了提高下载效率,工具需支持多线程下载,通过并行处理来显著提升整体的下载速度。 4. **图片分类与保存**:下载的图片应该按照网站本身的结构或者用户自定义的方式进行分类并保存到本地文件夹...
### Python多线程对POST请求服务器进行并发测试的方法 在当今快速发展的互联网环境中,服务器的稳定性和性能成为了评价一个网站好坏的重要指标之一。为了确保服务器能够承受高并发访问的压力,通常会采用各种方式...
例如,可以调整转换参数以降低图像质量,减少存储空间,或者使用多线程/多进程来并发处理多个PDF文件。 7. **应用场景**: 这种技术在很多场景下都有用武之地,如: - 在没有PDF阅读器的设备上查看PDF内容。 - ...
在实现过程中,还可能涉及到异步编程和多线程,以提高程序的响应速度。例如,使用`asyncio`库来实现异步加载头像,防止程序在处理大量图片时阻塞。 最后,代码组织和模块化也是重要的编程实践。开发者可能将代码...
- 另外,还可以尝试使用更高效的图像处理技术,比如GPU加速的图像处理库如CUDA或者使用多线程处理多个视频流。 4. **示例代码框架**: ```python from tkinter import Tk, Canvas from PIL import Image, ...
在Python编程语言中,处理图像是一项常见的任务,而切割图片是图像处理的一部分。这个示例展示了如何使用Python的PIL(Pillow)库来切割图片。PIL是Python Imaging Library的派生版本,提供了丰富的图像处理功能。 ...
1. **多线程处理**:icrawler利用Python的多线程机制,可以同时处理多个请求,显著提高爬取速度,尤其在处理大量图片下载时效果明显。 2. **内置下载引擎**:icrawler集成了多种图像下载引擎,如`requests`、`...
此外,为了提高算法的性能,还可以考虑使用多线程或GPU加速。如果需要自定义SLIC算法,可以参考其基本思想,实现自己的迭代聚类过程。 总的来说,SLIC算法在Python中的实现提供了强大且灵活的图像分割工具,结合...
此外,对于大型项目,可能需要考虑多线程或异步下载,提高效率。同时,处理HTTP错误和重试机制也是必不可少的,以应对网络不稳定等情况。 总的来说,`urretrieve`是一个简单易用的Python模块,能够帮助开发者高效地...
它可能包含了完整的代码结构,包括连接摄像头、拍照、光学变倍、局部聚焦和局部曝光的实例。在实际应用中,开发者可以参考这个示例,根据具体需求进行修改和扩展。 在实际开发中,除了上述基础操作,还需要考虑错误...
可以考虑使用多线程或多进程技术来提高转换效率。 ### 四、总结 通过以上介绍可以看出,使用Python将PDF文件转换为图片是一个相对简单的过程,只需要几个步骤即可完成。但是,在实际应用中还需要注意版权问题、图片...
**WIA(Windows Image ...同时,WIA还支持设备的动态添加和移除,以及多线程操作,为应用程序提供了高度的灵活性和可扩展性。由于其强大的功能和易用性,WIA成为了Windows平台上处理图像输入设备的首选技术之一。
为了优化,可以采用滑动窗口或多线程技术。此外,为了提高模板匹配的鲁棒性,还可以尝试对图像进行预处理,如灰度化、直方图均衡化或归一化。 以上就是使用OpenCV和Python实现模板匹配的基本流程。通过`Template...
17.5 在多线程环境中使用SWIG生成的模块 603 17.6 用PySequence_Fast将Python序列转为 C数组 604 17.7 用迭代器逐个访问Python序列的元素 608 17.8 从Python可调用的C函数中返回None 611 17.9 用gdb调试动态载入...