Python爬虫入门(二)解析源码

上一期讲了如何获取网页源码的方法,这一期说一说怎么从其中获得我们需要的和数据。

解析网页的方法很多,最常见的就是BeautifulSoup和正则了,其他的像xpath、PyQuery等等,其中我觉得最好用的就是xpath了,xpath真的超级简单好用,学了之后再也不想取用美丽汤了。下面介绍xpath的使用方法。

首先需要安装lxml,windows下安装lxml是个大坑,知乎上有人给出了解决方法Python LXML模块死活安装不了怎么办?(https://www.zhihu.com/question/30047496)

详细的用法可以参考爬虫入门到精通-网页的解析(xpath)(https://zhuanlan.zhihu.com/p/25572729)

在这里我们尝试使用xpath来迅速获取数据。

例如想要获熊猫直播虎牙直播(http://www.huya.com/g/lol)下主播的ID

import requests
from lxml import etree

url = 'http://www.huya.com/g/lol'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
res = requests.get(url,headers=headers).text
s = etree.HTML(res)
print(s.xpath('//i[@class="nick"]/text()'))

输出:

下面一步步讲解为什么这样做。

import requests
from lxml import etree

首先是导入模块,requests很常见,但是xpath需要from lxml import etree,你肯点想问为什么这样写,回答是“我也不知道”,就像是约定俗成的东西一样。

url = 'http://www.huya.com/g/lol'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
res = requests.get(url,headers=headers).text

这三步就是平常获取源码的过程,很简单。

s = etree.HTML(res)

给一个html,返回xml结构,为什么这样写??答案和上面一样。最重要的就是下面的这一步:

s.xpath('//i[@class="nick"]/text()')

按下F12看到“爱拍-古手羽”在i标签下,接着我们右键打开“查看网页源代码”,搜索“爱拍-古手羽”

确实找到了“爱拍-古手羽”就在i标签下,那我们就把他提出来吧!

s.xpath('//i[@class="nick"]/text()')

这个段代码意思是,找到class为“nick”的i标签,返回其中的文本信息,当然你也可以返回i标签中的title,写法如下:

s.xpath('//i[@class="nick"]/@title')

text()返回的是文本信息,@title则是标签里面的具体属性的值,例如我想知道观众人数

import requests
from lxml import etree

url = 'http://www.huya.com/g/lol'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
res = requests.get(url,headers=headers).text
s = etree.HTML(res)
print(s.xpath('//i[@class="js-num"]/text()'))

只需在原来基础上修改一个属性,i标签class为“js-num”里面的值

print(s.xpath('//i[@class="js-num"]/text()'))

返回结果是:

说明:在运行代码中,发现虎牙反爬虫做得挺好的,瞬间就识别爬虫身份并封了IP,所以我换了IP去访问,至于如何设置代理,在我的上一篇文章中有说到,去看看吧。

在实际操作中,你可能会遇到更加复杂的情况,所以一定记得去看看详细的教程。爬虫入门到精通-网页的解析(xpath)(https://zhuanlan.zhihu.com/p/25572729)

本文分享自微信公众号 - Python爬虫与算法进阶(zhangslob)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python爬虫与算法进阶

Python爬虫入门(一)获取源码

举个例子,爬一爬知乎日报的相关数据 http://daily.zhihu.com/ 1、获取源码 import requests url = 'http://d...

508130
来自专栏Seebug漏洞平台

TCTF/0CTF2018 XSS Writeup

刚刚4月过去的TCTF/0CTF2018一如既往的给了我们惊喜,其中最大的惊喜莫过于多道xss中Bypass CSP的题目,其中有很多应用于现代网站的防御思路。...

20530
来自专栏腾讯Bugly的专栏

移动App入侵与逆向破解技术-iOS篇

如果您有耐心看完这篇文章,您将懂得如何着手进行app的分析、追踪、注入等实用的破解技术,另外,通过“入侵”,将帮助您理解如何规避常见的安全漏洞,文章大纲: 简单...

3.5K60
来自专栏web前端教室

做页面就是“圈套圈”,不管你用什么&电商项目作业检查 -- 潘xx

昨天晚上喝多了,醒酒时已经过12点,昨晚断更一次。 //////// 咱们的零基础课今天讲到了ReactJs,主要介绍它是什么,有什么优点,jsx是啥?怎么用?...

22670
来自专栏FreeBuf

Offset2lib攻击测试:看我如何全面绕过64位Linux的内核防护

前言 免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! 地址空间布局随机化(ASLR),在你知道目标代码或数据定位的前...

31890
来自专栏冰霜之地

iOS 组件化 —— 路由设计思路分析

随着用户的需求越来越多,对App的用户体验也变的要求越来越高。为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VI...

23330
来自专栏IT派

爬虫实战:爬取当当网所有 Python 书籍

本文主要讲解如何利用urllib、re、BeautifulSoup 这几个库去实战,爬取当当网所有 Python 书籍。

22040
来自专栏美团技术团队

基于 KIF 的 iOS UI 自动化测试和持续集成

客户端 UI 自动化测试是大多数测试团队的研究重点,本文介绍猫眼测试团队在猫眼 iOS 客户端实践的基于 KIF 的 UI 自动化测试和持续集成过程。 测试框架...

61160
来自专栏nnngu

通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息

源代码:https://github.com/nnngu/LagouSpider

57260
来自专栏技术墨客

Ubuntu修改分辨率 转

通常情况下,图形界面的发行版 linux 可以在 Setting->Device->Display 中直接设置多个屏幕的分辨率。但是坑总是无处不在的,有时候明明...

2.1K40

扫码关注云+社区

领取腾讯云代金券