文档章节

requests+lxml爬虫利器

曾劲松
 曾劲松
发布于 2016/10/04 18:57
字数 495
阅读 414
收藏 3

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

requests

1.requests是一个强大的Python第三方Http库,基于httplib和urllib3,接口清晰易用,功能十分强大。

###1. 安装
pip install requests或者easy_install requests

###2. 基本使用
在ipython中利用自动补全看下调用requests之后返回的response对象的一些属性:

In [1]: import requests
In [2]: r = requests.get('https://api.github.com')
In [3]: r.
r.apparent_encoding  r.history            r.raw
r.close              r.is_redirect        r.reason
r.connection         r.iter_content       r.request
r.content            r.iter_lines         r.status_code
r.cookies            r.json               r.text
r.elapsed            r.links              r.url
r.encoding           r.ok                 
r.headers            r.raise_for_status 

快速入门:http://requests-docs-cn.readthedocs.io/zh_CN/latest/user/quickstart.html 

高级的用法:http://requests-docs-cn.readthedocs.io/zh_CN/latest/user/advanced.html

lxml

安装方法(很多同学在安装过程中遇到了问题),见我的上一篇博客。

使用requests库获取到网页内容后,再通过lxml解析,也可通过BeautifulSoup等等工具

lxml是基于C语言库libxml2和libxslt的python化绑定,其对XML(HTMl)有强大的处理能力,并且向下兼容Python的ElementTree API,支持Xpath和BeautifulSoup解析, 使用起来非常方便。

官方教程:http://lxml.de/

下面是一个在Windows平台下用python3.5用lxml解析HTML的例子,lxml通过xpath表达式来获取数据

(详见:http://www.cnblogs.com/descusr/archive/2012/06/20/2557075.html):

from lxml import etree

html = '''

<html>
  <head>
    <meta name="content-type" content="text/html; charset=utf-8" />
    <title>友情链接查询 - 站长工具</title>
    <!-- uRj0Ak8VLEPhjWhg3m9z4EjXJwc -->
    <meta name="Keywords" content="友情链接查询" />
    <meta name="Description" content="友情链接查询" />

  </head>
  <body>
    <h1 class="heading">Top News</h1>
    <p style="font-size: 200%">World News only on this page</p>
    Ah, and here's some more text, by the way.
    <p>... and this is a parsed fragment ...</p>

    <a href="http://www.cydf.org.cn/" rel="nofollow" target="_blank">青少年发展基金会</a> 
    <a href="http://www.4399.com/flash/32979.htm" target="_blank">洛克王国</a> 
    <a href="http://www.4399.com/flash/35538.htm" target="_blank">奥拉星</a> 
    <a href="http://game.3533.com/game/" target="_blank">手机游戏</a>
    <a href="http://game.3533.com/tupian/" target="_blank">手机壁纸</a>
    <a href="http://www.4399.com/" target="_blank">4399小游戏</a> 
    <a href="http://www.91wan.com/" target="_blank">91wan游戏</a>

  </body>
</html>

'''

page = etree.HTML(html.lower())
hrefs = page.xpath(u"//a")
for href in hrefs:
   # print(href.attrib)
   print(href.text)

 

© 著作权归作者所有

曾劲松
粉丝 5
博文 200
码字总数 141434
作品 0
武汉
私信 提问
加载中

评论(0)

lxml结合xpath语法实例一(数据提取)

我本人比较喜欢蜡笔小新,这个实例批量下载蜡笔小新图片 源码分析:所有图片包含在class为searchbqppdiv tagbqppdiv的div下的a标签的src属性中 思路:获取源码,提取数据,下载图片 目标地址...

osc_q010126d
2019/08/01
1
0
多线程爬取小说时如何保证章节的顺序

前言 爬取小说时,以每一个章节为一个线程进行爬取,如果不加以控制的话,保存的时候各个章节之间的顺序会乱掉。 当然,这里说的是一本小说保存为单个txt文件,如果以每个章节为一个txt文件,...

osc_7pd4z0cu
04/16
4
0
博客园目录

table标签中thead、tbody、tfoot的作用http://www.cnblogs.com/zhouxinfei/p/8001510.html python selenium模拟滑动操作http://www.cnblogs.com/zhouxinfei/p/8001506.html Selenium webdriv......

_周小董
2017/12/09
0
0
Requests中文乱码解决方案

分析: r = requests.get(“http://www.baidu.com“) r.text返回的是Unicode型的数据。 使用r.content返回的是bytes型的数据。 也就是说,如果你想取文本,可以通过r.text。 如果想取图片,文...

osc_z7d2bxvl
2019/01/30
4
0
requests.get()获取网页中文乱码的问题解决方案

摘自博客《https://blog.csdn.net/chaowanghn/article/details/54889835》留作备份。 都在推荐用Requests库,而不是Urllib,但是读取网页的时候中文会出现乱码。 分析: r = requests.get(“...

osc_6a70cndq
2018/04/19
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Go Gin 简明教程

https://geektutu.com/post/quick-go-gin.html

Java搬砖工程师
42分钟前
19
0
中台建设-中台概述

一,什么是中台 ①,中台是能力的共享和沉淀, ②,中台是为前台服务的,有了中台,可快速构建前台应用. 二,为什么建设中台 ①,能力共享和沉淀,避免烟囱似建设 ②,快速搭建前台. 三,怎么建设中台 ...

Original123
45分钟前
15
0
如何更改远程Git存储库的URI(URL)? - How to change the URI (URL) for a remote Git repository?

问题: I have a repo (origin) on a USB key that I cloned on my hard drive (local). 我在硬盘驱动器(本地)上克隆的USB密钥上有一个回购(来源)。 I moved "origin" to a NAS and succ......

技术盛宴
57分钟前
26
0
连接热点的电脑能注册到开热点电脑的注册中心,但是网关不能路由到服务实例

类似问题描述 1.连接热点的电脑能注册到开热点电脑的注册中心,但是网关不能路由到服务实例。2.微服务注册到到Eureka注册中心的ip不正确,导致网关路由不到具体为服务实例。3.Eureka注册...

LoSingSang
今天
14
0
利用flask部署keras模型报错

利用flask部署keras模型时报错: Tensor("dense_2/Softmax:0", shape=(?, 26), dtype=float32) is not an element of this graph. 解决方法 import tensorflow as tfgraph = tf.get_default......

hc321
今天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部