python小爬虫练手
一个人无聊,写了个小爬虫爬取不可描述图片....
代码太短,就暂时先往这里贴一下做备份吧。
注:这是很严肃的技术研究,当然爬下来的图片我会带着批判性的眼光审查一遍的.... :)
#! /usr/bin/python import chardet
import urllib3
import uuid
import os
import logging
import time
import sys
import re
import threading
from bs4 import BeautifulSoup """
http://www.qiubaichengren.com/1.html
""" class PageNotFoundException(BaseException):
"""
代表网页404的异常
"""
pass class ResponseStatusException(BaseException):
pass class QiuBaiChengRenSpider: http_pool_manager = urllib3.PoolManager() img_save_dir = 'D:/QiuBaiChengRen/' logger = logging.getLogger('QiuBaiChengRenSpider') def __init__(self):
self.init_log() def init_log(self):
stream_handler = logging.StreamHandler(sys.stdout)
self.logger.addHandler(stream_handler)
self.logger.setLevel(logging.DEBUG) def get(self, url):
try:
http_response = self.http_pool_manager.request('GET', url)
if http_response.status == 404:
raise PageNotFoundException('404')
if http_response.status != 200:
raise ResponseStatusException(http_response.status)
return http_response.data
except Exception:
self.logger.info(u'获取网页的时候发生了异常')
return '' def extract_img(self, html_doc):
bs = BeautifulSoup(html_doc, 'lxml')
imgs = bs.select('div.mala-text img')
return imgs def save_img(self, img_tag):
img_link = img_tag['src'].strip()
save_name = self.img_save_dir + img_tag['alt'] + '___' + uuid.uuid4().hex + os.path.splitext(img_link)[1]
save_name = re.compile('[\\s+,\",\']').sub('', save_name) # 覆盖掉生成的文件名中不合法的部分 self.logger.info('Save img: %s %s' %(save_name, img_link)) img_byte = self.get(img_link)
if img_byte == '':
return img_file = open(save_name, 'wb')
img_file.write(img_byte)
img_file.close() def list_visitor(self, seed):
threads = []
i = 1
while True:
try:
url = seed % {'page': i}
self.logger.info('Begin process:%s' %url) html_doc = self.get(url)
if html_doc == '':
continue imgs = self.extract_img(html_doc)
for img in imgs:
# self.logger.info('Saving img:%s %s' %(img['alt'], img['src']))
t1 = threading.Thread(target=self.save_img, args={img})
t1.start()
threads.append(t1)
i += 1
except PageNotFoundException:
self.logger.info('404')
break
except BaseException:
break
for t1 in threads:
t1.join() if __name__ == '__main__':
spider = QiuBaiChengRenSpider()
spider.list_visitor('http://www.qiubaichengren.com/%(page)d.html')
python小爬虫练手的更多相关文章
- 简单的node爬虫练手,循环中的异步转同步
简单的node爬虫练手,循环中的异步转同步 转载:https://blog.csdn.net/qq_24504525/article/details/77856989 看到网上一些基于node做的爬虫 ...
- python爬虫练手项目快递单号查询
import requests def main(): try: num = input('请输入快递单号:') url = 'http://www.kuaidi100.com/autonumber/ ...
- Python入门、练手、视频资源汇总,拿走别客气!
摘要:为方便朋友,重新整理汇总,内容包括长期必备.入门教程.练手项目.学习视频. 一.长期必备. 1. StackOverflow,是疑难解答.bug排除必备网站,任何编程问题请第一时间到此网站查找. ...
- python学习笔记-练手实例
1.题目:输出 9*9 乘法口诀表. 程序分析:分行与列考虑,共9行9列,i控制行,j控制列 代码: for i in range(1,10): print ('\r') for j ...
- 【现学现卖】python小爬虫
1.给小表弟汇总一个院校列表,想来想去可以写一个小爬虫爬下来方便些,所以就看了看怎么用python写,到了基本能用的程度,没有什么特别的技巧,大多都是百度搜的,遇事不决问百度啦 2.基本流程就是: 用 ...
- Python 爬虫练手项目—酒店信息爬取
from bs4 import BeautifulSoup import requests import time import re url = 'http://search.qyer.com/ho ...
- Python 小爬虫流程总结
接触Python3一个月了,在此分享一下知识点,也算是温故而知新了. 接触python之前是做前端的.一直希望接触面能深一点.因工作需求开始学python,几乎做的都是爬虫..第一个demo就是爬取X ...
- Python Python Python 100个练手项目
1.淘宝模拟登录2.天猫商品数据爬虫3.爬取淘宝我已购买的宝贝数据4.每天不同时间段通过微信发消息提醒女友5.爬取5K分辨率超清唯美壁纸6.爬取豆瓣排行榜电影数据(含GUI界面版)7.多线程+代理池爬 ...
- Python小爬虫-自动下载三亿文库文档
新手学python,写了一个抓取网页后自动下载文档的脚本,和大家分享. 首先我们打开三亿文库下载栏目的网址,比如专业资料(IT/计算机/互联网)http://3y.uu456.com/bl-197?o ...
随机推荐
- Kotlint集合简单总结
1.数组操作 var testArray = Array<>("s","ss")或者 = arrayOf("s","s ...
- CentOS下php安装mcrypt扩展
CentOS下php安装mcrypt扩展 Posted on 2012-09-12 15:27 C'est la vie 阅读(48294) 评论(3) 编辑 收藏 (以下步骤均为本人实际操作,可能与 ...
- 利用Docker安装Web前端性能测试工具Sitespeed.io
目录结构 一.Sitespeed.io概述 1.Sitespeed.io简介 2.Sitespeed.io使用场景 二.Sitespeed.io的安装和使用 1.安装Sitespeed.io 2.连接 ...
- ThinkPHP的调用css,js和图片的路径
按网上的说法,在根目录下建了一个Public目录,把css,js和图片放到Public目录下,然后用__PUBLIC__/...或__ROOT__/Public/...调用.但是发现无论如何改路径都无 ...
- 【bzoj3697】采药人的路径 树的点分治
题目描述 给出一棵 $n$ 个点的树,每条边的边权为1或0.求有多少点对 $(i,j)$ ,使得:$i$ 到 $j$ 的简单路径上存在点 $k$ (异于 $i$ 和 $j$ ),使得 $i$ 到 $k ...
- elsarticle模板 去掉Preprint submitted to
参考:http://latex.org/forum/viewtopic.php?t=11123 修改elsarticle.cls文件. 我的CTeX装在c盘中,elsarticle.cls文件路径为: ...
- QoS专题-第1期-QoS理论篇
QoS理论篇 1 QoS的产生 随着网络技术的飞速发展,IP网络已经从当初的单一数据网络向集成数据.语音.视频.游戏的多业务网络转变.网络中所承载的数据呈几何级倍数增长,而且这些业务对网络带 ...
- 洛谷 P1987 摇钱树
题目戳 题目描述 Cpg 正在游览一个梦中之城,在这个城市中有n棵摇钱树...这下,可让Cpg看傻了...可是Cpg只能在这个城市中呆K天,但是现在摇钱树已经成熟了,每天每棵都会掉下不同的金币(不属于 ...
- Day21-模板之继承
一,模板之继承 1.在template下面新建一个master.html的文件,当做母版. 2. 母版里需要被替代的部分,以block开始,以endblock结尾 {% block content % ...
- [BJWC2011]元素 线性基
题面 题面 题解 一个方案合法,当且仅当选取的01串凑不出0. 因此就是要使得选取的01串全在线性基内,具体原因可以看这道题:[CQOI2013]新Nim游戏 线性基 要使得魔力值最大,只需要按法力值 ...