XPath+requests库爬取猫眼电影

之前我们用正则表达式 + requests 库 爬取猫眼电影 TOP 100,原文链接在这里:

https://blog.csdn.net/S1998F/article/details/97916617

 

但是正则表达式很复杂,也很难学,我们能不能不用正则表达式匹配想要的内容呢?答案是可以的,这次我们选用 XPath 来解析内容。

 

要获取的内容还是排名、电影海报、电影名称、演员和上映时间,只不过改变了解析方式,那么整个代码中只需要修改 parse_one_page(html) 函数即可。函数修改如下:
 

from lxml import etree


def parse_one_page(html) -> list:
    xpath_obj = etree.HTML(html)    # 构造一个 XPath 解析对象
    index_list = xpath_obj.xpath('//dd/i/text()')
    image_list = xpath_obj.xpath('//dd/a/img/@data-src')
    name_list = xpath_obj.xpath('//dd/a/@title')
    actor_list = xpath_obj.xpath('//dd/div/div/div/p[contains(@class, "star")]/text()')
    time_list = xpath_obj.xpath('//dd/div/div/div/p[contains(@class, "releasetime")]/text()')
    res = []
    for i in range(10):
        tmp = {
            'index': index_list[i],
            'image': image_list[i],
            'name': name_list[i].strip(),
            'actor': actor_list[i].strip(),
            'time': time_list[i].strip(),
        }
        res.append(tmp)
    return res

 

首先要构造一个 XPath 解析对象,然后对这个对象调用 XPath 语法进行解析,经过解析后会生成一个列表,我们把这些列表的内容按序构造成一个字典,使得输出时更加美观。XPath 语法如果不熟悉的话,可以 Google 一下,很容易,几分钟就能学会。

 

总结一下,利用 XPath 进行网页解析会比正则表达式更加简单。

 

ps.如果想要打开新世界的大门,可以扫描下方的二维码,关注微信公众号「SuperFeng」。

XPath+requests库爬取猫眼电影_第1张图片

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