Python爬虫基础之 Requests+Xpath 爬取豆瓣电影(二)

我们要爬取豆瓣电影《肖申克的救赎》(如图1所示)上面的一些信息,网站地址是:
https://movie.douban.com/subject/1292052/
  


Python爬虫基础之 Requests+Xpath 爬取豆瓣电影(二)_第1张图片
图1

代码如下:

import requests
#from lxml import etree
from lxml import html
etree = html.etree
url = 'https://movie.douban.com/subject/1292052/'
data = requests.get(url).text
s=etree.HTML(data)

film=s.xpath('//*[@id="content"]/h1/span[1]/text()')
director=s.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')
actor=s.xpath('//*[@id="info"]/span[3]/span[2]/a/text()')
time=s.xpath('//*[@id="info"]/span[13]/text()')
print('电影名称:',film)
print('导演:',director)
print('主演:',actor)
print('片长:',time)  

运行结果如图2所示
  


Python爬虫基础之 Requests+Xpath 爬取豆瓣电影(二)_第2张图片
图2

知识点和问题解决:
1、Xpath 即为 XML 路径语言(XML Path Language),它是一种用来确定 XML 文档中某部分位置的语言。Xpath 基于 XML 的树状结构,提供在数据结构树中找寻节点的能力。***起初 Xpath 的提出的初衷是将其作为一个通用的、介于 Xpointer 与 XSL 间的语法模型。但是Xpath 很快的被开发者采用来当作小型查询语言。
Xpath解析网页的流程:
1).首先通过Requests库获取网页数据
2).通过网页解析,得到想要的数据或者新的链接
3).网页解析可以通过 Xpath 或者其它解析工具进行,Xpath 在是一个非常好用的网页解析工具
常见的网页解析方法比较:

正则表达式使用比较困难,学习成本较高,BeautifulSoup 性能较慢,相对于 Xpath 较难,在某些特定场景下有用。Xpath 使用简单,速度快(Xpath是lxml里面的一种),是入门最好的选择。
2、期初引入eTree的代码是

from lxml import etree

但是这样会报错的:虽然网上说的是python 3.5之后的lxml中不再有etree,但是其实这种说法是有问题的,虽然新版本无法直接from lxml import etree这样,但是它只不过是换了一个办法引出etree模块而已!
  正确的引用方法是:这种方式就是新版本lxml中etree中的使用方法,不过使用过程中发现有一些方法无法直接自动匹配提示,对新手入门不是很友好而已。

from lxml import html
text=```xxx```//测试的html文本
etree = html.etree
htmlDiv = etree.HTML(text)
title = htmls.xpath("//meta[1]/@content")
print(title)

3、我们在开发者模式中发现演员的Xpath是

//*[@id="info"]/span[3]/span[2]/span[1]/a
//*[@id="info"]/span[3]/span[2]/span[2]/a
//*[@id="info"]/span[3]/span[2]/span[4]/a

这样我们将他们进行集合取出的方法是:

//*[@id="info"]/span[3]/span[2]/a/text()

我们发现只有span[1]、span[2]、span[3]这部分是不同的,那我们将这部分合并或省略即可。

你可能感兴趣的:(Python爬虫)