原文地址: http://www.30daydo.com/article/56

因为平时爱好摄影,所以喜欢看看色影无忌论坛的获奖摄影作品,所以写了个小script用来抓取上面的获奖图片,亲自测试可以使用。

自动抓所有的获奖图片

完整代码:

#-*-coding=utf-8-*-
__author__ = 'rocchen'
from bs4 import BeautifulSoup
import urllib2,sys,StringIO,gzip,time,random,re,urllib,os
reload(sys)
sys.setdefaultencoding('utf-8')
class Xitek():def __init__(self):self.url="http://photo.xitek.com/"user_agent="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"self.headers={"User-Agent":user_agent}self.last_page=self.__get_last_page()def __get_last_page(self):html=self.__getContentAuto(self.url)bs=BeautifulSoup(html,"html.parser")page=bs.find_all('a',class_="blast")last_page=page[0]['href'].split('/')[-1]return int(last_page)def __getContentAuto(self,url):req=urllib2.Request(url,headers=self.headers)resp=urllib2.urlopen(req)#time.sleep(2*random.random())content=resp.read()info=resp.info().get("Content-Encoding")if info==None:return contentelse:t=StringIO.StringIO(content)gziper=gzip.GzipFile(fileobj=t)html = gziper.read()return html#def __getFileName(self,stream):def __download(self,url):p=re.compile(r'href="(/photoid/\d+)"')#html=self.__getContentNoZip(url)html=self.__getContentAuto(url)content = p.findall(html)for i in content:print iphotoid=self.__getContentAuto(self.url+i)bs=BeautifulSoup(photoid,"html.parser")final_link=bs.find('img',class_="mimg")['src']print final_link#pic_stream=self.__getContentAuto(final_link)title=bs.title.string.strip()filename = re.sub('[\/:*?"<>|]', '-', title)filename=filename+'.jpg'urllib.urlretrieve(final_link,filename)#f=open(filename,'w')#f.write(pic_stream)#f.close()#print html#bs=BeautifulSoup(html,"html.parser")#content=bs.find_all(p)#for i in content:#    print i'''print bs.titleelement_link=bs.find_all('div',class_="element")print len(element_link)k=1for href in element_link:#print type(href)#print href.tag''''''if href.children[0]:print href.children[0]''''''t=0for i in href.children:#if i.a:if t==0:#print kif i['href']print linkif p.findall(link):full_path=self.url[0:len(self.url)-1]+linksub_html=self.__getContent(full_path)bs=BeautifulSoup(sub_html,"html.parser")final_link=bs.find('img',class_="mimg")['src']#time.sleep(2*random.random())print final_link#k=k+1#print type(i)#print i.tag#if hasattr(i,"href"):#print i['href']#print i.tagt=t+1#print "*"''''''if href:if href.children:print href.children[0]'''#print "one element link"def getPhoto(self):start=0#use style/0photo_url="http://photo.xitek.com/style/0/p/"for i in range(start,self.last_page+1):url=photo_url+str(i)print url#time.sleep(1)self.__download(url)'''url="http://photo.xitek.com/style/0/p/10"self.__download(url)'''#url="http://photo.xitek.com/style/0/p/0"#html=self.__getContent(url)#url="http://photo.xitek.com/"#html=self.__getContentNoZip(url)#print html#'''
def main():sub_folder = os.path.join(os.getcwd(), "content")if not os.path.exists(sub_folder):os.mkdir(sub_folder)os.chdir(sub_folder)obj=Xitek()obj.getPhoto()if __name__=="__main__":main()
详细讲解请移步: 
http://www.30daydo.com/article/56

python爬虫(一)抓取 色影无忌图片相关推荐

  1. python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?

    原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...

  2. python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业)

    python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业) 这次就以mapbar为例爬取道路交通拥堵情况 第一步,瓦片标号解析 第二步,拼url,然后下载 第三步,图片拼接 ...

  3. Python爬虫:抓取智联招聘岗位信息和要求(进阶版)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:王强 ( 想要学习Python?Python学习交流群 ...

  4. python抓取网页电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...

    利用正则表达式编写python 爬虫,抓取网页联系我们电话号码!这里以九奥科技(www.jiuaoo.com)为例,抓取'联系我们'里面的电话号码,并输出. #!/usrweilie/bin/pyth ...

  5. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  6. python抓取视频违法吗,科学网—【python爬虫】抓取B站视频相关信息(一) - 管金昱的博文...

    昨天我在B站上写了这么一篇文章,但是被他们锁住了.无奈之下我复制到知乎上先保存起来 在这篇名为<三天学会用python进行简单地爬取B站网页视频数据>文章中我主要提到了两点在已知aid的情 ...

  7. Python爬虫采集抓取:Python3.x+Fiddler 采集抓取 APP 数据

    随着移动互联网的市场份额逐步扩大,手机 APP 已经占据我们的生活,以往的数据分析都借助于爬虫采集爬取网页数据进行分析,但是新兴的产品有的只有 APP,并没有网页端这对于想要提取数据的我们就遇到了些问 ...

  8. python 爬虫 数据抓取的三种方式

    python 爬虫   数据抓取的三种方式 常用抽取网页数据的方式有三种:正则表达式.Beautiful Soup.lxml 1.正则表达式 正则表达式有个很大的缺点是难以构造.可读性差.不易适用未来 ...

  9. python爬虫定时抓取数据

    python爬虫定时抓取数据 from scrapy import cmdline import datetime import time def doSth(): # 把爬虫程序放在这个类中 shi ...

  10. python正则表达式提取电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...

    利用正则表达式编写python 爬虫,抓取网页联系我们电话号码!这里以九奥科技(www.jiuaoo.com)为例,抓取'联系我们'里面的电话号码,并输出. #!/usrweilie/bin/pyth ...

最新文章

  1. Datawhale组队学习周报(第035周)
  2. 打开CMDLINE中的 ” earlyprink “ 参数
  3. 手撕Nspack3.7(北斗)壳
  4. conda - 虚拟环境,常用指令
  5. 使用mybatis出现异常:invalid comparison: java.time.LocalDateTime and java.lang.String
  6. spring源代码系列(一)sring源代码编译 spring源代码下载 spring源代码阅读
  7. golang 模板 tpl 算术运算_高考数学常设的32个命题陷阱,七成同学中招失分!文末附数学疑难题(精品)模板!...
  8. 独立站运营模式怎么选择?
  9. java swing 等待框_java – 让用户使用Swing等待
  10. Silverlight在IE中无法显示但在Firefox中正常的原因和解决办法
  11. 我不是领导,如何让别人听我的话?
  12. 拓端tecdat|R语言中的prophet预测时间序列数据模型
  13. 人工智能机器学习深度学习TensorFlow最新学习视频资料
  14. “新基建”背景下,智慧灯杆产业面临的问题及思考
  15. 酷睿i5 12490f什么水平 i5 12490f属于什么档次 i512490f怎么样
  16. Windows认证机制详解(借物表在文章末尾)
  17. MySQL学习篇(一 安装)
  18. 课堂笔记:Android UI控件
  19. 员工半夜被微信告知公司解散| 工资未发、押金未退,共享宝马走向破产…
  20. 微信朋友圈分享链接调用外部浏览器打开指定URL链接是如何实现的

热门文章

  1. ASP.NET MVC 小区物业费管理平台
  2. matlab什么专业要学,【读书1】【2017】MATLAB与深度学习——什么是机器学习(1)
  3. 编程软件和三菱PLC通讯不上是什么原因
  4. 一个有用的数据库:同花顺数据中心
  5. jQuery实现展开伸缩效果
  6. 邮箱发送——使用spring自带的JavaMailSenderImpl实现邮件发送
  7. JDBC连接池核心参数包括?(多选题)
  8. QT 学习笔记(六)
  9. AntPathMatcher路径匹配器
  10. modbus转profinet网关连接ABB变频器在博图程序案例