1. Requests:让 HTTP 服务人类

Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。

中文文档API:http://docs.python-requests.org/zh_CN/latest/index.html

安装方式

两种方式任选其一

  1. pip install requests
  2.  
  3. easy_install requests

2. BeautifulSoup

Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。

2.1 安装

  1. pip install beautifulsoup4

2.2 导入

  1. from bs4 import BeautifulSoup

爬取代码

  1.  
  1. import requests
    from bs4 import BeautifulSoup
    import os
    import re
  2.  
  3. Hostreferer = {
    'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
    'Referer': 'http://www.mzitu.com'
    }
    Picreferer = {
    'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
    'Referer': 'http://i.meizitu.net'
    }
  4.  
  5. def get_page_name(url): # 获得图集最大页数和名称
    html = get_html(url)
    # 创建Beautiful Soup对象,指定lxml解析器
    soup = BeautifulSoup(html, 'lxml')
    span = soup.findAll('span')
    title = soup.find('h2', class_="main-title")
    return span[9].text, title.text
  6.  
  7. def get_html(url): # 获得页面html代码
    req = requests.get(url, headers=Hostreferer)
    html = req.text
    return html
  8.  
  9. def get_img_url(url, name): # 获取图集里面的每张图片
    html = get_html(url)
    soup = BeautifulSoup(html, 'lxml')
    img_url = soup.find('img', alt=name)
    return img_url['src']
  10.  
  11. def save_img(img_url, count, name): # 保存图集里面的每张图片
    req = requests.get(img_url, headers=Picreferer)
    new_name = rename(name)
    with open(new_name + '/' + str(count) + '.jpg', 'wb') as f:
    f.write(req.content)
  12.  
  13. def rename(name): # 正则匹配
    rstr = r'[\/\\\:\*\?\<\>\|]'
    new_name = re.sub(rstr, "", name)
    return new_name
  14.  
  15. def save_one_atlas(old_url): # 保存图集
    page, name = get_page_name(old_url)
    new_name = rename(name)
    os.mkdir(new_name)
  16.  
  17. print("图集--" + name + "--开始保存")
    for i in range(1, int(page) + 1):
    url = old_url + "/" + str(i)
    img_url = get_img_url(url, name)
    # print(img_url)
    save_img(img_url, i, name)
    print('正在保存第' + str(i) + '张图片')
    print("图集--" + name + "保存成功")
  18.  
  19. def get_atlas_list(url): # 获取网站里面的所有图集
    req = requests.get(url, headers=Hostreferer)
    soup = BeautifulSoup(req.text, 'lxml')
    atlas = soup.find_all(attrs={'class': 'lazy'})
    atlas_list = []
    for atla in atlas:
    atlas_list.append(atla.parent['href'])
    return atlas_list
  20.  
  21. def save_one_page(start_url): # 调用方法save_one_atlas保存
    atlas_url = get_atlas_list(start_url)
    for url in atlas_url:
    save_one_atlas(url)
  22.  
  23. if __name__ == '__main__':
    start_url = "http://www.mzitu.com/"
    for count in range(1, 3):
    url = start_url + "page/" + str(count) + "/"
    save_one_page(url)
    print("爬取完成")

使用requests+BeaBeautiful Soup爬取妹子图图片的更多相关文章

  1. Python协程爬取妹子图(内有福利,你懂得~)

    项目说明: 1.项目介绍   本项目使用Python提供的协程+scrapy中的选择器的使用(相当好用)实现爬取妹子图的(福利图)图片,这个学会了,某榴什么的.pow(2, 10)是吧! 2.用到的知 ...

  2. Python3爬虫系列:理论+实验+爬取妹子图实战

    Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...

  3. python爬取妹子图全站全部图片-可自行添加-线程-进程爬取,图片去重

    from bs4 import BeautifulSoupimport sys,os,requests,pymongo,timefrom lxml import etreedef get_fenlei ...

  4. py3+requests+urllib+bs4+threading,爬取斗图图片

    实现原理及思路请参考我的另外几篇爬虫实践博客 py3+urllib+bs4+反爬,20+行代码教你爬取豆瓣妹子图:http://www.cnblogs.com/UncleYong/p/6892688. ...

  5. Python网络爬虫 | Scrapy爬取妹子图网站全站照片

    根据现有的知识,写了一个下载妹子图(meizitu.com)Scrapy脚本,把全站两万多张照片下载到了本地. 网站的分析 网页的网址分析 打开网站,发现网页的网址都是以 http://www.mei ...

  6. .Net Core爬虫爬取妹子网图片

    现在网上大把的Python的爬虫教程,很少看见有用C#写的,正好新出的.Net Core可以很方便的部署到Linux上,就用妹子图做示范写个小爬虫 在C#下有个很方便的类库 HtmlAgilityPa ...

  7. Python 2.7和3.6爬取妹子图网站单页测试图片

    1.url= http://www.mzitu.com/74100/x,2为1到23的值 2.用到模块 os 创建文件目录; re模块正则匹配目录名 图片下载地址; time模块 限制下载时间;req ...

  8. Python 2.7_爬取妹子图网站单页测试图片_20170114

    1.url= http://www.mzitu.com/74100/x,2为1到23的值 2.用到模块 os 创建文件目录; re模块正则匹配目录名 图片下载地址; time模块 限制下载时间;req ...

  9. Python 爬取 妹子图(技术是无罪的)

    ... #!/usr/bin/env python import urllib.request from bs4 import BeautifulSoup def crawl(url): header ...

随机推荐

  1. Oracle第三方ado.net数据提供程序(转)

    原文地址:http://www.infoq.com/cn/news/2009/06/oracleclient_deprecated 这项决定有部分原因是基于目前Oracle的第三方ADO.NET数据提 ...

  2. Unity3d 应用系统分析

  3. "cannot be resolved or is not a field"问题解决 (转载)

    转自:http://blog.csdn.net/liranke/article/details/16803295 在修改了资源文件后,出现“"cannot be resolved or is ...

  4. bzoj 4069: [Apio2015]巴厘岛的雕塑【dp】

    居然要对不同的数据写不同的dp= = 首先记得开long long,<<的时候要写成1ll<<bt 根据or的性质,总体思路是从大到小枚举答案的每一位,看是否能为0. 首先对于 ...

  5. ionic2 如何引入第三方cordova插件

    例如:cordova-plugin-wechat 这个插件可以做微信登录,分享支付等 首先第一步:ionic plugin add cordova-plugin-wechat --variable w ...

  6. [Swift通天遁地]一、超级工具-(1)动态标签:给UILabel文字中的Flag和url添加点击事件

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. 支持宕机自动恢复触发一次性或周期性任务执行的组件包首次介绍-easyTask

    easyTask介绍 一个方便触发一次性或周期性任务执行的工具包,支持海量,高并发,高可用,宕机自动恢复任务 使用场景 需要精确到秒的某一时刻触发任务执行.比如订单交易完成24小时后如果客户未评价,则 ...

  8. mac下安装ngnix以及开启关闭重启

    一.安装 执行如下命令 brew search nginx brew install nginx 安装完以后,可以在终端输出的信息里看到一些配置路径: /usr/local/etc/nginx/ngi ...

  9. Unix\Linux | 总结笔记 | 用户管理

    1. useradd [选项] 用户名   用于创建新的用户 useradd命令中的用户参数以及作用 参数 作用 -d 指定用户的家目录(默认为/home/username) -e 账户的到期时间,格 ...

  10. Windows API函数大全

    WindowsAPI函数大全(精心总结) 目录 1. API之网络函数... 1 2. API之消息函数... 1 3. API之文件处理函数... 2 4. API之打印函数... 5 5. API ...