Python 爬虫实战(二):使用 requests-html
Python 爬虫实战(一):使用 requests 和 BeautifulSoup,我们使用了 requests 做网络请求,拿到网页数据再用 BeautifulSoup 解析,就在前不久,requests 作者 kennethreitz 出了一个新库 requests-html,Pythonic HTML Parsing for Humans™,它可以用于解析 HTML 文档的。requests-html 是基于现有的框架 PyQuery、Requests、lxml 等库进行了二次封装,更加方便开发者调用。
安装
Mac:
pip3 install requests-html
Windows:
pip install requests-html
实例

代码撸多了,让我们看会妹纸,爬的网站我选的是 http://www.win4000.com/zt/xinggan.html ,打开网站,观察到这是个列表,图片是缩略图,要想保存图片到本地,当然需要高清大图,因此得进入列表详情,进一步解析,完整代码如下:
from requests_html import HTMLSession
import requests
import time
session = HTMLSession()
# 解析图片列表
def get_girl_list():
    # 返回一个 response 对象
    response = session.get('http://www.win4000.com/zt/xinggan.html')  # 单位秒数
    content = response.html.find('div.Left_bar', first=True)
    li_list = content.find('li')
    for li in li_list:
        url = li.find('a', first=True).attrs['href']
        get_girl_detail(url)
# 解析图片详细
def get_girl_detail(url):
    # 返回一个 response 对象
    response = session.get(url)  # 单位秒数
    content = response.html.find('div.scroll-img-cont', first=True)
    li_list = content.find('li')
    for li in li_list:
        img_url = li.find('img', first=True).attrs['data-original']
        img_url = img_url[0:img_url.find('_')] + '.jpg'
        print(img_url + '.jpg')
        save_image(img_url)
# 保持大图
def save_image(img_url):
    img_response = requests.get(img_url)
    t = int(round(time.time() * 1000))  # 毫秒级时间戳
    f = open('/Users/wuxiaolong/Desktop/Girl/%d.jpg' % t, 'ab')  # 存储图片,多媒体文件需要参数b(二进制文件)
    f.write(img_response.content)  # 多媒体存储content
    f.close()
if __name__ == '__main__':
    get_girl_list()
代码就这么多,是不是感觉很简单啊。
说明:
1、requests-html 与 BeautifulSoup 不同,可以直接通过标签来 find,一般如下:
标签
标签.someClass
标签#someID
标签[target=_blank]
参数 first 是 True,表示只返回 Element 找到的第一个,更多使用:http://html.python-requests.org/ ;
2、这里保存本地路径 /Users/wuxiaolong/Desktop/Girl/我写死了,需要读者改成自己的,如果直接是文件名,保存路径将是项目目录下。
遗留问题
示例所爬网站是分页的,没有做,可以定时循环来爬妹纸哦,有兴趣的读者自己玩下。
参考
今天用了一下Requests-HTML库(Python爬虫)
公众号
我的公众号:吴小龙同学,欢迎交流~
Python 爬虫实战(二):使用 requests-html的更多相关文章
- Python爬虫实战二之爬取百度贴吧帖子
		
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...
 - 转 Python爬虫实战二之爬取百度贴吧帖子
		
静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...
 - 【图文详解】python爬虫实战——5分钟做个图片自动下载器
		
python爬虫实战——图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,(没看的先去看!!)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap sho ...
 - python爬虫实战——5分钟做个图片自动下载器
		
python爬虫实战——图片自动下载器 制作爬虫的基本步骤 顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤. 一般来说,制作一个爬虫需要分以下几个步骤: 分析需求(对,需求分析非常重要, ...
 - [python爬虫]Requests-BeautifulSoup-Re库方案--Requests库介绍
		
[根据北京理工大学嵩天老师“Python网络爬虫与信息提取”慕课课程编写 文章中部分图片来自老师PPT 慕课链接:https://www.icourse163.org/learn/BIT-10018 ...
 - Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺
		
更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 可就在今天,淘宝把所有的账号设置成了匿名显示,SO,获取非匿名旺旺号已经 ...
 - Python爬虫实战六之抓取爱问知识人问题并保存至数据库
		
大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...
 - 转 Python爬虫实战一之爬取糗事百科段子
		
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
 - 路飞学城—Python爬虫实战密训班 第三章
		
路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...
 
随机推荐
- CF959D Mahmoud and Ehab and another array construction task 数学
			
Mahmoud has an array a consisting of n integers. He asked Ehab to find another array b of the same l ...
 - POJ1769(线段树+DP)
			
飞翔 题意 : 给定一个区间长度 n ,接下来给出 m 个子区间,要求最少选出多少个区间才能使得 1~n 这个区间被所选的所有子区间覆盖 分析: 首先是动态规划,dp[i]表示把最大值从1位置搞到第i ...
 - Educational Codeforces Round 3 C
			
C. Load Balancing time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
 - shell编程上
			
1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shel ...
 - 一个基于QT简单登录对话框
			
1. 登录对话框式样 2. QLoginDialog.h #ifndef DIALOG_H #define DIALOG_H #include <QtGui/QDialog> #inclu ...
 - 转  使用utl_http获取某个http页面内容
			
#########1.ACL详细解释: 11g 对于XDB UTL_HTTP or others package 的权限管控进一步加强,如果需要使用到XDB 以下包 UTL_TCP, UTL_SMT ...
 - 01 性能优化基础怀实践 之 ASH分析
			
1.模拟一个会话阻塞的场景. 通过update 同一行数据达到模拟阻塞的效果 : SQL> create table t1 (id number ,name varchar2(20)) ; ...
 - Postman如何做接口测试
			
Postman 之前是作为Chrome 的一个插件,现在要下载应用才能使用. 以下是postman 的界面: 各个功能区的使用如下: 快捷区: 快捷区提供常用的操作入口,包括运行收藏夹的一组测试数据, ...
 - OS---文件结构
			
1.概述 1.1 对于任何一个文件,都存在以下2种形式结构: 文件的逻辑结构: 从用户的角度出发所观察到的文件组织形式,独立于文件的物理特性: 文件的物理结构(文件存储结构): 文件在外存上的存储组织 ...
 - RTT之AT命令组件
			
包含客户端和服务器:用于GPRS和3G的通讯命令格式.四种基本功能 测试功能:AT+<x>=? 用于查询命令参数格式及取值范围: 查询功能:AT+<x>? 用于返回命令参数当前 ...