`

出差时写的一个抓取baidu图片的东东

阅读更多
使用了多线程但没有处理同步。
正则表达式是用kodos弄出来的,这个工具使用起来比较顺手。
#!/usr/bin/env python
#coding=cp936

import re
import urllib
import thread
import time

#url_part1 = '''http://images.google.cn/images?q='''
#url_part2 = '''&svnum=10&hl=zh-CN&lr=&newwindow=1&start='''
#url_part3 = '''&sa=N'''
url_part1 = '''http://image.baidu.com/i?z=0&cl=2&ct=201326592&sn=&lm=-1&cm=1&sc=0&bu=&rn=16&tn=baiduimage&word='''
url_part2 = '''&pn='''


def nextpage(keywords,start):
    return url_part1 + urllib.quote(keywords) + url_part2 + str(start)

#compile_obj = re.compile(r'dyn.Img\("http://(.)+","","","')
compile_obj = re.compile(r'<a href="http://image.baidu.com/ir\?t=1&u=http://(.)+&f=http://')

def parseurl(content):
    ret = []
    match_objs = compile_obj.finditer(content)
    for match in match_objs:
        url = match.group().split('&')[1][2:]
        ret.append(url)
    return ret

#exitdic = {}

def downimg(url,exitdic):
    filename = url.split('/')[-1]
    #print url,'---->',filename
    urllib.urlretrieve(url,filename)
    exitdic[url].acquire()

def download(url):
    exitdic = {}
    print '开始下载页面: ' + url
    conn = urllib.urlopen(url)
    content = conn.read()
    conn.close()
    urls = parseurl(content)
    for url in urls:
        print url
        exitdic[url] = thread.allocate_lock()
        thread.start_new(downimg,(url,exitdic))
    
    for key in exitdic.keys():
        while not exitdic[key].locked():
            #time.sleep(200)
            pass
    print '完成一页'

#抓取关键字为vista的图片,抓取范围为查询结果的第4到8页
if __name__ == '__main__':
    for i in range(4,8):
        url = nextpage('vista',i*16)
        download(url)
    
    print 'OK'

分享到:
评论

相关推荐

    Java抓取百度图片

    在本文中,我们将深入探讨如何使用Java编程语言和Spring Boot框架来实现百度图片的抓取与下载功能。首先,我们需要了解几个关键的概念和技术。 **Java** 是一种广泛使用的面向对象的编程语言,它以其跨平台的特性而...

    Python项目案例开发从入门到实战源代码第6章 爬虫应用——抓取百度图片

    在本项目案例中,我们将深入探讨Python编程在爬虫应用中的实际操作,特别是如何利用Python来抓取并下载百度图片。这个案例旨在帮助初学者掌握网络爬虫的基本技术和流程,同时也为进阶开发者提供了一个实战练习的机会...

    python 抓取百度云分享数据,百度云最新接口抓取分享链接

    在这个主题中,我们将探讨如何使用Python来抓取百度云分享的数据,特别是利用百度云最新的API接口。这通常涉及到请求、解析HTML或JSON响应、处理验证码以及可能的反爬策略。 首先,要抓取百度云分享的数据,我们...

    Python3爬虫抓取百度图片中的图片

    Python3爬虫抓取百度图片中的图片,可根据需求输入关键字、图片数量

    从百度图片筛选条件分析百度抓取收录图片哪些信息.docx

    这表明,百度在收录图片时,图片格式将作为一个信息点被抓取并建立索引。用户可以根据图片格式来筛选图片,这大大提高了搜索的效率。 第二,图片的抓取时间也是一个重要的检索条件。百度对于新抓取的图片会在搜索...

    自己写的一个网站图片抓取程序

    标题中的“自己写的一个网站图片抓取程序”指的是一个用Go语言编写的程序,它的主要功能是自动从网站上下载并收集图片。这种程序通常用于数据挖掘、网站备份或者图像分析等场景。开发者可能在编写这个程序时考虑了...

    php 抓取百度搜索结果脚本

    php 抓取百度搜索结果脚本,php命令行下运行

    python爬虫 抓取百度图片

    python爬虫,抓取百度图片存储到本地文件夹中,可以修改关键字,所需图片的长宽

    这段代码是一个Python爬虫程序,用于从百度图片搜索中抓取指定关键词的图片避开了反爬机制,超时或被屏蔽会自动重试

    这段代码是一个Python爬虫程序,用于从百度图片搜索中抓取指定关键词的图片。程序通过设置超时时间和请求头等参数,实现了对百度图片搜索结果的访问和解析。程序的主要功能包括: 1. 定义了一个名为`Crawler`的类...

    百度地图抓取软件

    总的来说,"百度地图抓取软件"VER4.0是一款面向地图数据获取和管理的工具,它可以帮助用户便捷地获取百度地图的信息,但使用时务必谨慎,确保操作合规。对于开发者而言,了解如何合法、高效地获取和使用地图数据,是...

    qt写的抓取网页图片并保存到本地

    在这个项目中,"qt写的抓取网页图片并保存到本地",开发者利用QT的网络编程和文件操作功能,实现了一个小型的爬虫程序。这个程序可以解析指定URL的网页内容,从中提取出所有的图片链接,并将这些图片下载保存到本地...

    东东tools(JD CK抓取提交工具)

    东东tools,JD CK抓取提交工具,支持JDX

    一个可以批量抓取网页图片的工具

    本程序可以抓取指定IE窗口中已下载完毕的网页中的全部或部分图片(可根据图片文件后缀和图片所属站点的域名过滤,也可以对单个图片进行选取),对于选中的图片,可以: 1)抓取文件URL列表,可以转换为UBB代码或HTML...

    winform实现百度网页内容抓取

    总的来说,通过结合C#的HttpWebRequest类和Winform的用户界面功能,我们可以构建一个简单但实用的百度网页内容抓取工具。这不仅有助于学习HTTP通信和网页抓取,还可以作为进一步开发更复杂网络爬虫的基础。

    百度地图数据抓取

    综上所述,百度地图数据抓取是一个涉及编程、网络协议、数据处理、GIS应用以及法律伦理的综合过程。在进行此类操作时,开发者需要了解并遵守相关的规则和最佳实践,以确保其行为的合法性和安全性。

    百度地图抓取 抓取地址信息

    在这个项目中,很可能开发者创建了一个用户界面,用户可以在其中输入关键词,然后应用通过调用百度地图API来搜索和显示相关地址。 在实际操作中,抓取大量数据时必须遵守百度地图的使用条款和条件,避免过度请求或...

    抓取MM图片

    【标题】:“抓取MM图片”这一主题涉及的是网络图像数据的采集技术,特别是针对特定类型(例如“MM”,通常指的是美女图片)的图片进行抓取。这在互联网上广泛应用于个人兴趣、数据分析或者网站内容的自动更新。在这...

    百度百科抓取工具

    这个是一个python脚本,加入了动态代理,主要做的就是实现百度百科自动抓取

    抓取网页图片,css和js

    图片抓取是爬虫的一个重要部分,主要是找到HTML中的`&lt;img&gt;`标签,提取其`src`属性值作为图片URL。此外,还需处理CSS背景图片,这通常隐藏在CSS规则中。CSS中引用图片的方式有以下几种: 1. `background-image`属性:...

Global site tag (gtag.js) - Google Analytics