小爬虫,环境:

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相关推荐

  1. 小小爬虫成长记第一天

    这是我第一次对于一种语言产生了一种浓厚的兴趣,所以我决定好好学习python,后面的日子我都将和大家分享一下我这个小小小爬虫成长心得: 首先分享一下关于安装pycharm2018 1.1的收获吧,其实 ...

  2. Python 小小爬虫练手,爬取自己的IP

                 Python 小小爬虫练手,爬取自己的IP import re import urllib.request url="http://2020.ip138.com/i ...

  3. python爬虫入门案例day01:拼多多

    python爬虫入门案例day01:拼多多 目标网站 拼多多 目标网址 https://www.pinduoduo.com/ 开发环境 1.window11 2.python3.7 3.PyCharm ...

  4. 爬虫python为啥违法_为什么有的Python爬虫很容易被封

    Python爬虫在互联网上进行数据抓取时,经常会遇见莫名其妙的封禁问题,爬着爬着就不行了,导致日常工作都无法正常运行.很多朋友都不明白为什么会被封,为什么很容易就被封了,到底是哪里出问题了呢?为什么有 ...

  5. python学习之小小爬虫

    学习python一段时间了,写了一个图片的小小爬虫,分享下,不喜勿喷! #coding=utf-8 ''' Created on 2015-5-22@author: 悦文 '''import re i ...

  6. 图片抓取_小小爬虫批量抓取微信推文里的图片

    哈喽,大家好,今天给大家分享一个特别特别小的爬虫案例! 爬取微信推文中的图片!!!! 有人说,这有啥用,,,,万一人家推文是放的是以图片的方式放的某个PPT的内容呢,你想把它弄下来,咋整,就是爬取啦. ...

  7. 爬虫很调皮?来看看反爬虫收拾爬虫的法子有哪些!

    文章目录 简单的了解爬虫和反爬虫, 1.根据用户行为反爬虫,IP封锁 2.通过Header反爬虫 3.动态页面的反爬虫 4.最为经典的反爬虫策略当属"验证码"了. 5.比较普通的反 ...

  8. 爬虫摸索中~~(PS:小小爬虫,何惧哉?且到明日,再看今朝。)

    目录 搭建环境 安装爬虫库 爬虫测试 获取网页整体信息 1.访问目标网页 2.引入Requests库获取请求响应 3.引入BeautifulSoup库格式化处理响应数据 获取网页中特定信息 1.找到目 ...

  9. 爬虫取中间文本_小小爬虫批量抓取微信推文里的图片

    哈喽,大家好,今天给大家分享一个特别特别小的爬虫案例! 爬取微信推文中的图片!!!! 有人说,这有啥用,,,,万一人家推文是放的是以图片的方式放的某个PPT的内容呢,你想把它弄下来,咋整,就是爬取啦. ...

最新文章

  1. JsonCpp的简单使用方法
  2. Docker cgroups作用(十)
  3. mysql级联查询_mysql 各种级联查询后更新(update select)
  4. 关于敏捷规划的微信对话
  5. MySQL学习笔记之五:存储引擎和查询缓存
  6. 炫界 (795) -(脸兵马俑)_秦兵马俑彩绘脱落背后的秘密: 粘合剂竟然是动物胶与蛋类混合...
  7. 解决由于没有办理权限导致的403,权限不足
  8. ubuntu16.04 装机4:安装防火墙ufw
  9. [转载]斐讯K2 A2版免TTL刷BREED不死Bootloader
  10. 刷题总结——玉蟾宫(bzoj3039单调栈)
  11. 如何建立异地容灾备份体系
  12. 对大学三年学习生活的总结与反思
  13. Stata基础33讲(连享会公开课)
  14. 【PCL】.asc文件转换为.pcd文件
  15. 有什么软件可以测试近视的度数,在家怎样测试视力度数,手机微信视力检测
  16. Facebook 如何管理 150亿张照片
  17. poj 3067 树状数组
  18. 安卓APP开发之工程构建
  19. Nginx 正确使用姿势
  20. 阿里云轻量应用服务器如何快速搭建WordPress个人博客?

热门文章

  1. ubuntu 安装Intel RealSense ZR300
  2. python中哈希表和set的使用
  3. gkui服务器下发消息超时,gkui服务器下发消息超时
  4. 【软考备战·希赛网每日一练】2023年5月12日
  5. 移动WebApp开发-phoneGap+android入门(http://blog.csdn.net/cwb1128/article/details/18004505)
  6. DAU、eCPM、ARPU是个什么鬼?不懂这些就是没入行!还有救
  7. 《计算机网络--自顶向下方法》第二章--应用层
  8. 基于MATLAB 的道路交通标志识别
  9. 驱动文件中只有cat/inf/dll文件,怎么安装
  10. 办公室计算机oa,办公自动化oa是计算机