爬取豆瓣的正在热映电影

爬取豆瓣的正在热映电影

引言

本篇文章较为基础,没有什么技术含量,主要是为了回顾一下如何用XPath提取HTML页面中的数据
在这里插入图片描述

思路分析

首先,进入豆瓣电影的主页,并且选择全部正在热映的电影,进入此页面
在这里插入图片描述
这就是我们要爬取页面的URL地址
https://movie.douban.com/cinema/nowplaying/weifang/
URL地址最后一部分是当前你所在的地区
地址请求时的套路就是常规的爬虫头部伪装,今天要看的关键是页面数据的提取,这里,我就用XPath来提取数据吧!不懂XPath语法的小伙伴请自行百度。
在这里插入图片描述
分析网页的布局,我们可以发现,每一个影片都位于一个li标签中,而所有的li标签都位于一个ul标签中,因此,我们只要找到每一个li标签,再进行相应的数据提取即可。具体的操作,直接看代码吧!
在这里插入图片描述

代码

# !/usr/bin/env python
# —*— coding: utf-8 —*—
# @Time:    2020/2/1 19:17
# @Author:  Martin
# @File:    douban.py
# @Software:PyCharm
import requests
from lxml import etree
import pandas as pd
"""
豆瓣电影(正在热映的电影)爬取
"""
url = 'https://movie.douban.com/cinema/nowplaying/weifang/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
    'Referer': 'https://movie.douban.com/'}
response = requests.get(url, headers=headers)
text = response.text
html = etree.HTML(text)
ul = html.xpath("//ul[@class='lists']")[0]
lis = ul.xpath("./li")
movies = []
for li in lis:
    title = li.xpath("@data-title")[0]
    score = li.xpath("@data-score")[0]
    star = li.xpath("@data-star")[0]
    release = li.xpath("@data-release")[0]
    duration = li.xpath("@data-duration")[0]
    region = li.xpath("@data-region")[0]
    director = li.xpath("@data-director")[0]
    actors = li.xpath("@data-actors")[0]
    img = li.xpath(".//img/@src")[0]
    data = {
        'title': title,
        'score': score,
        'star': star,
        'release': release,
        'duration': duration,
        'region': region,
        'director': director,
        'actors': actors,
        'img': img
    }
    movies.append(data)
df = pd.DataFrame(movies)
df.to_csv("./result/douban.csv", index=False, encoding='utf_8_sig')

结果展示

在这里插入图片描述

发布了151 篇原创文章 · 获赞 236 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Deep___Learning/article/details/104137696