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


图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所示
  


图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]这部分是不同的,那我们将这部分合并或省略即可。

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信