豆瓣电影榜-学习Python Selenium的第一个例子

第0步:研究网站

先使用chrome打开豆瓣电影网站:https://movie.douban.com,然后找到排行榜里面的科幻电影,发现页面地址为:https://movie.douban.com/typerank?type_name=%E7%A7%91%E5%B9%BB&type=17&interval_id=100:90&action=,很好,后面就会有用了。
右键页面,选择“检查”功能,打开调试工具。在Elements里找到电影封面和电影名称的元素,如图:

image.png

可以观察到,它们都在一个classmovie-content的div里,所以我们只需找出所有classmovie-content的div,然后拿出它们的封面和名称即可。

第1步:编写代码

创建一个douban_movie.py

from selenium import webdriver
from selenium.webdriver.common.by import By
import requests
import os
import time

# 无界面浏览
options = webdriver.ChromeOptions()
# options.add_argument('--headless')

# 打开豆瓣科幻电影排行榜
driver = webdriver.Chrome(options=options)
driver.get("https://movie.douban.com/typerank?type_name=%E7%A7%91%E5%B9%BB&type=17&interval_id=100:90&action=")

# 创建目录,用于保存图片
directory = 'image/豆瓣科幻/'
# 如果目录不存在则创建,此方法常用
if not os.path.exists(directory):
    os.makedirs(directory)

time.sleep(3)

headers = {'User-Agent': 'Mozilla/4.0'}
i = 1
for ele in driver.find_elements(By.CSS_SELECTOR, '.movie-list-panel.pictext .movie-content'):
    print(ele.get_attribute('innerHTML'))
    try:
        img = ele.find_element(By.CSS_SELECTOR, 'img')
        if img:
            img = img.get_attribute('data-original')
            name = ele.find_element(By.CSS_SELECTOR, '.movie-name-text a').get_attribute('innerHTML')
            print(i, name, img)
            filename = '{}{}_{}.jpg'.format(directory, i, name) # 图片命名:{排行}_{电影名}.jpg
            html = requests.get(url=img, headers=headers).content
            with open(filename, 'wb') as f:
                f.write(html)
    except BaseException:
        print("Error")
    i += 1

# 退出浏览器
driver.quit()

执行py文件,发现文件夹里多了如下图片:


image.png

大功告成!

但是还没有结束……

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容