思路
使用环境
- python版本:python3
- 浏览器:Google Chrome
- 模块:xpath(lxml)、requests
一、请求网页
豆瓣电影Top250第一页url:https://movie.douban.com/top250?start=0&filter=
一开始请求网页加了headers,然后想解析网页来着,竟然返回了418(咦,这返回个是啥,反正不是200,难受,查查文档),这是IETF在1998年愚人节时发布的一个笑话RFC,具体可以参考RFC 2324 - Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)超文本咖啡壶控制协议。htcpcp1.0协议中的418的意义是:当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个418错误状态码,表示“我是一个茶壶”。
emm,可能是豆瓣启动反爬机制了,然后给返回一个玩笑,查了好久的资料,最后,当当当,请看
请求返回418,已解决,没错,就这么简单,加一个timeout参数
html = requests.get(url, headers=headers,timeout=30)
请求成功返回状态码200
print(html.status_code)
二、解析网页
(一)请求网页成功后当然是解析网页,分析网页结构可知,我们需要的信息都被<div class="info">
所包含
那我们分成一小块一小块来解决问题,先用xpath解析出class属性为info的div块
root.xpath('//div[@class="info"]')
(二)再对里面的详细信息进行分析,如下
# 影片名称
title = InformationBlock.xpath('div[@class="hd"]/a/span[@class="title"]/text()')[0]
# print(title)
info = InformationBlock.xpath('div[@class="bd"]/p[1]/text()')
# print(type(info))
directorAndStarring = str