小小爬虫很狂暴-----day01
小爬虫,环境:
1, python 2.7环境
2, 必须确保联网状态。
3,装好需要的库文件。 对于pybloomfilter 的引用,本人经验:
不要去 pip install pybloomfilter, 装上之后,不会报错,但无法运行。
应该 pip install pybloomfiltermmap ( 加上mmap,两个m)
4,本人爬虫是在Ubuntu16.04上(还好有qq,否则在ubuntu 都不知道如何截图了 ),爬完之后的界面如下,只要想爬可以一直爬下去,不过我运行了一会就中断了:
闲话不多说,代码如下:
#coding=utf-8
import urllib2
import httplib
import re
from pybloomfilter import BloomFilter
import osrequest_headers = {'host': "www.mafengwo.cn",'connection': "keep-alive",'cache-control': "no-cache",'upgrade-insecure-requests': "1",'user-agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36",'accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",'accept-language': "zh-CN,en-US;q=0.8,en;q=0.6"
}
city_home_pages = []
city_ids = []
dirname = 'mafengwo_notes/'# 创建 Bloom Filter
download_bf = BloomFilter(1024 * 1024 * 16, 0.01)# 检查用于存储网页文件夹是否存在,不存在则创建if not os.path.exists(dirname):os.makedirs(dirname)def download_city_notes(id):for i in range(1, 999):#游记中用于翻页的网页地址url = 'http://www.mafengwo.cn/yj/%s/1-0-%d.html' % (id, i)if url in download_bf:continueprint 'open url %s' % (url)download_bf.add(url)req = urllib2.Request(url, headers=request_headers)response = urllib2.urlopen(req)htmlcontent = response.read()city_notes = re.findall('href="/i/\d{7}.html', htmlcontent)# 如果导航页错误,该页的游记数为0,则意味着 1-0-xxx.html 已经遍历完,结束这个城市if len(city_notes) == 0:returnfor city_note in city_notes:try:city_url = 'http://www.mafengwo.cn%s' % (city_note[6:])if city_url in download_bf:print 'bukenengzhixingdao'print city_urlprint download_bfcontinueif city_url in city_notes:print 'yidingyou'print 'download %s' % (city_url)req = urllib2.Request(city_url, headers=request_headers)response = urllib2.urlopen(req)html = response.read()filename = city_url[7:].replace('/', '_')fo = open("%s%s" % (dirname, filename), 'wb+')fo.write(html)fo.close()download_bf.add(city_url)except Exception, Arguments:print Argumentscontinuetry:# 下载目的地的首页req = urllib2.Request('http://www.mafengwo.cn/mdd/', headers=request_headers)# print reqresponse = urllib2.urlopen(req)#获取了,整个页面的信息htmlcontent = response.read()# print htmlcontent# 利用正则表达式,找出所有的城市主页city_home_pages = re.findall('/travel-scenic-spot/mafengwo/\d{5}.html', htmlcontent)print len(city_home_pages)# print city_home_pages#'/travel-scenic-spot/mafengwo/10065.html', '/travel-scenic-spot/mafengwo/10099.html', '/travel-scenic-spot/mafengwo/10208.html',# # 通过循环,依次下载每个城市下的所有游记for city in city_home_pages:city_ids.append(city[29:34])#添加一些list`数组print city_idsdownload_city_notes(city[29:34])except urllib2.HTTPError, Arguments:print Arguments
except httplib.BadStatusLine:print 'BadStatusLine'
except Exception, Arguments:print Arguments
小小爬虫很狂暴-----day01相关推荐
- 小小爬虫成长记第一天
这是我第一次对于一种语言产生了一种浓厚的兴趣,所以我决定好好学习python,后面的日子我都将和大家分享一下我这个小小小爬虫成长心得: 首先分享一下关于安装pycharm2018 1.1的收获吧,其实 ...
- Python 小小爬虫练手,爬取自己的IP
Python 小小爬虫练手,爬取自己的IP import re import urllib.request url="http://2020.ip138.com/i ...
- python爬虫入门案例day01:拼多多
python爬虫入门案例day01:拼多多 目标网站 拼多多 目标网址 https://www.pinduoduo.com/ 开发环境 1.window11 2.python3.7 3.PyCharm ...
- 爬虫python为啥违法_为什么有的Python爬虫很容易被封
Python爬虫在互联网上进行数据抓取时,经常会遇见莫名其妙的封禁问题,爬着爬着就不行了,导致日常工作都无法正常运行.很多朋友都不明白为什么会被封,为什么很容易就被封了,到底是哪里出问题了呢?为什么有 ...
- python学习之小小爬虫
学习python一段时间了,写了一个图片的小小爬虫,分享下,不喜勿喷! #coding=utf-8 ''' Created on 2015-5-22@author: 悦文 '''import re i ...
- 图片抓取_小小爬虫批量抓取微信推文里的图片
哈喽,大家好,今天给大家分享一个特别特别小的爬虫案例! 爬取微信推文中的图片!!!! 有人说,这有啥用,,,,万一人家推文是放的是以图片的方式放的某个PPT的内容呢,你想把它弄下来,咋整,就是爬取啦. ...
- 爬虫很调皮?来看看反爬虫收拾爬虫的法子有哪些!
文章目录 简单的了解爬虫和反爬虫, 1.根据用户行为反爬虫,IP封锁 2.通过Header反爬虫 3.动态页面的反爬虫 4.最为经典的反爬虫策略当属"验证码"了. 5.比较普通的反 ...
- 爬虫摸索中~~(PS:小小爬虫,何惧哉?且到明日,再看今朝。)
目录 搭建环境 安装爬虫库 爬虫测试 获取网页整体信息 1.访问目标网页 2.引入Requests库获取请求响应 3.引入BeautifulSoup库格式化处理响应数据 获取网页中特定信息 1.找到目 ...
- 爬虫取中间文本_小小爬虫批量抓取微信推文里的图片
哈喽,大家好,今天给大家分享一个特别特别小的爬虫案例! 爬取微信推文中的图片!!!! 有人说,这有啥用,,,,万一人家推文是放的是以图片的方式放的某个PPT的内容呢,你想把它弄下来,咋整,就是爬取啦. ...
最新文章
- JsonCpp的简单使用方法
- Docker cgroups作用(十)
- mysql级联查询_mysql 各种级联查询后更新(update select)
- 关于敏捷规划的微信对话
- MySQL学习笔记之五:存储引擎和查询缓存
- 炫界 (795) -(脸兵马俑)_秦兵马俑彩绘脱落背后的秘密: 粘合剂竟然是动物胶与蛋类混合...
- 解决由于没有办理权限导致的403,权限不足
- ubuntu16.04 装机4:安装防火墙ufw
- [转载]斐讯K2 A2版免TTL刷BREED不死Bootloader
- 刷题总结——玉蟾宫(bzoj3039单调栈)
- 如何建立异地容灾备份体系
- 对大学三年学习生活的总结与反思
- Stata基础33讲(连享会公开课)
- 【PCL】.asc文件转换为.pcd文件
- 有什么软件可以测试近视的度数,在家怎样测试视力度数,手机微信视力检测
- Facebook 如何管理 150亿张照片
- poj 3067 树状数组
- 安卓APP开发之工程构建
- Nginx 正确使用姿势
- 阿里云轻量应用服务器如何快速搭建WordPress个人博客?
热门文章
- ubuntu 安装Intel RealSense ZR300
- python中哈希表和set的使用
- gkui服务器下发消息超时,gkui服务器下发消息超时
- 【软考备战·希赛网每日一练】2023年5月12日
- 移动WebApp开发-phoneGap+android入门(http://blog.csdn.net/cwb1128/article/details/18004505)
- DAU、eCPM、ARPU是个什么鬼?不懂这些就是没入行!还有救
- 《计算机网络--自顶向下方法》第二章--应用层
- 基于MATLAB 的道路交通标志识别
- 驱动文件中只有cat/inf/dll文件,怎么安装
- 办公室计算机oa,办公自动化oa是计算机