用xpath遇到报错:'NoneType' object has no attribute 'xpath'

来源:2-3 xpath及html基础知识

闪闪一年

2020-02-18

老师,我用xpath试着在豆瓣上取一个电影名字,但是遇到了报错,代码如下:

import requests
from lxml import etree

url = 'https://movie.douban.com/subject/30252495/?tag=%E7%83%AD%E9%97%A8&from=gaia'
data = requests.get(url).text
s=etree.HTML(data)

title=s.xpath('//*[@id="content"]/h1/span[1]/text()')
print(title)

报错信息如下:


  File "<ipython-input-11-114783aa16ff>", line 8, in <module>
    title=s.xpath('//*[@id="content"]/h1/span[1]/text()')

AttributeError: 'NoneType' object has no attribute 'xpath'

这是什么原因?

写回答

1回答

NavCat

2020-02-18

不同的网站有不同程度的反爬机制,你可以打印下requests请求过来的内容。

请求豆瓣的网页需要加上请求头,示例代码:

data = requests.get(url, headers={
	'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}).text

添加 User-Agent表示将你的请求伪装成浏览器请求

0
1
闪闪一年
加上了,可以了,感谢老师
2020-02-19
共1条回复

手把手教你把Python应用到实际开发 不再空谈语法

学会项目开发思路,掌握Python高阶用法。

1341 学习 · 244 问题

查看课程