详解使用Selenium爬取豆瓣电影前100的爱情片相关信息

让我详细讲解一下“详解使用Selenium爬取豆瓣电影前100的爱情片相关信息”的完整攻略。

1. 环境搭建

首先,需要安装好Selenium和ChromeDriver。Selenium是Python中的一个web自动化测试工具,可以模拟浏览器行为,而ChromeDriver是Selenium对Chrome浏览器的驱动。

你可以通过pip安装Selenium:

pip install selenium

然后去ChromeDriver的官网下载对应版本的驱动,并将其加入系统的PATH中。可以使用下面的代码来测试是否安装成功:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

如果成功打开了百度网页,说明环境搭建成功。

2. 爬取豆瓣电影前100的爱情片

首先,我们需要进入豆瓣电影爱情片前100的网页,使用Selenium模拟点击下一页按钮,并循环爬取每一页的电影信息。代码如下:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://movie.douban.com/top250?start=0&filter=")

movies = []
while True:
    ul = driver.find_element_by_xpath('//ol[@class="grid_view"]')
    all_li = ul.find_elements_by_xpath('.//li[@class=""]')

    for li in all_li:
        movie = {}

        title = li.find_element_by_xpath('.//span[@class="title"]')
        movie['title'] = title.text

        bd = li.find_element_by_xpath('.//div[@class="bd"]')
        bd_contents = bd.text.split('\n')
        movie['director'] = bd_contents[0].split(' ')[1]
        movie['actors'] = bd_contents[1][3:]
        movie['score'] = li.find_element_by_xpath('.//span[@class="rating_num"]')\
                          .text
        movie['quote'] = li.find_element_by_xpath('.//span[@class="inq"]')\
                         .text

        movies.append(movie)

    try:
        next_page = driver.find_element_by_xpath('//span[@class="next"]/a')
        driver.execute_script("arguments[0].click();", next_page)
    except:
        break

driver.quit()

在上面的代码中,我们使用find_element_by_xpath方法来获取网页上的元素,有了这些元素之后,我们就可以提取出每部电影的标题、导演、演员、评分以及简介等信息。可以看到,我们把每部电影的信息都存储在一个字典中,再将所有电影的字典存储在了一个列表中。这样,我们就得到了所有电影的信息。

3. 保存到本地

接下来,把获取的电影信息保存到本地文件中。代码如下:

import json

with open('movies.json', 'w', encoding='utf-8') as f:
    json.dump(movies, f, ensure_ascii=False)

运行完毕后,你会在当前脚本所在目录下,看到一个movies.json文件。打开它,即可看到所有电影的信息已经保存到这个文件中。

示例1

下面,我们来演示如何获取每部电影的海报,并保存到本地文件中。代码如下:

from selenium import webdriver
import urllib.request

driver = webdriver.Chrome()
driver.get("https://movie.douban.com/top250?start=0&filter=")

while True:
    ul = driver.find_element_by_xpath('//ol[@class="grid_view"]')
    all_li = ul.find_elements_by_xpath('.//li[@class=""]')

    for li in all_li:
        title = li.find_element_by_xpath('.//span[@class="title"]')
        img_url_raw = li.find_element_by_xpath('.//img')\
                      .get_attribute('src')
        img_url = img_url_raw[:-7]
        img_url += 'jpg'

        urllib.request.urlretrieve(img_url, title.text + '.jpg')

    try:
        next_page = driver.find_element_by_xpath('//span[@class="next"]/a')
        driver.execute_script("arguments[0].click();", next_page)
    except:
        break

driver.quit()

在上面的代码中,我们使用了urllib库自动下载海报,并将其保存到本地文件中。

示例2

下面,我们来演示如何用Selenium自动登录微博,并爬取自己的微博信息。代码如下:

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://weibo.com")

login_link = driver.find_element_by_xpath('//a[@class="gn_login"]')
driver.execute_script("arguments[0].click();", login_link)

time.sleep(5)

username_input = driver.find_element_by_xpath('//input[@name="username"]')
password_input = driver.find_element_by_xpath('//input[@name="password"]')
submit_btn = driver.find_element_by_xpath('//a[@action-type="btn_submit"]')

username_input.send_keys("你的微博账号")
password_input.send_keys("你的微博密码")
submit_btn.click()

time.sleep(10)

driver.get('https://weibo.com/u/你的微博ID?is_all=1')
weibo_contents = driver.find_elements_by_xpath('//div[@class="WB_text W_f14"]')

for i, content in enumerate(weibo_contents):
    print('微博 %d:' % i)
    print(content.text)
    print()

driver.quit()

在上面的代码中,我们先通过find_element_by_xpath方法获取到了登录链接,并用execute_script模拟点击进行登录。之后等待5秒钟,直到弹出账号密码填写界面,然后自动填写账号密码并点击提交按钮完成登录。最后访问自己的微博主页,提取出所有微博的文本内容并打印出来。

这就是使用Selenium爬取豆瓣电影前100的爱情片相关信息的完整攻略,希望能够帮到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解使用Selenium爬取豆瓣电影前100的爱情片相关信息 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python使用pandas读写excel文件的方法实例

    下面是对于“Python使用Pandas读写Excel文件的方法实例”的详细攻略: 一、前置条件 在开始学习之前,确保你已经掌握以下内容: Python基础知识 Pandas基础知识 安装了Pandas库 二、安装Pandas库 如果你还没有安装Pandas库,可以使用以下命令进行安装: pip install pandas 三、读取Excel文件 通过Pa…

    python 2023年5月14日
    00
  • 如何在串联Pandas数据帧时添加标识符列

    在Pandas中串联数据帧可以使用concat函数,该函数的axis参数指定了操作方向(行 or 列),若要添加标识符列(也称索引),可以使用keys参数。 以下是完整的攻略: 1.导入Pandas库 import pandas as pd 2.创建多个数据帧 我们可以通过字典进行数据帧的创建,示例代码如下: df1 = pd.DataFrame({‘A’:…

    python-answer 2023年3月27日
    00
  • 将CSV转换为Pandas DataFrame

    转换CSV文件为Pandas DataFrame的主要步骤是读取CSV文件,并将其存储为Pandas DataFrame对象。以下是将CSV文件转换为Pandas DataFrame的完整攻略。 1. 导入必要的Python库 在Python中使用Pandas库读取和处理CSV文件,因此需要导入该库以及其他一些必要的Python库。 import panda…

    python-answer 2023年3月27日
    00
  • 如何通过索引标签在Pandas DataFrame中删除行

    在Pandas DataFrame中,我们可以使用索引标签来删除行。下面是详细的攻略步骤以及带有实例的说明: 1. 查看DataFrame 首先,我们需要查看DataFrame的数据内容。可以使用pandas库中的read_csv()函数读取csv文件,也可以手动创建DataFrame对象。例如,我们可以通过以下代码创建一个简单的DataFrame对象: i…

    python-answer 2023年3月27日
    00
  • win10系统下安装superset的步骤

    下面是在win10系统下安装superset的步骤攻略: 安装步骤 步骤一:安装Python Python官网下载对应版本的Python安装包,也可以通过conda安装。需要注意的是,目前superset所支持的Python版本为Python 3。安装完成后,应将python和pip(Python package installer)添加到系统的Path环境…

    python 2023年5月14日
    00
  • Pandas中Apply函数加速百倍的技巧分享

    下面我将为您详细讲解“Pandas中Apply函数加速百倍的技巧分享”的完整攻略。 初识Pandas Apply Pandas中的apply()函数是一个非常实用的函数,它可用于在Pandas中的Series或DataFrame中执行一些函数操作。apply()函数有多种版本,包括apply(),applymap()和map()函数。其中,apply()函数…

    python 2023年5月14日
    00
  • Pandas加速代码之避免使用for循环

    为了加速Pandas代码的执行效率,我们应该尽可能地避免使用Python的for循环。以下是避免使用for循环的完整攻略: 1. 使用向量化操作 Pandas的核心功能是基于向量化的操作。这意味着,我们可以直接使用函数和运算符来对整个Series或DataFrame执行操作,而不需要使用for循环。例如,我们可以使用apply()函数在Series或Data…

    python 2023年6月13日
    00
  • 基于Python数据分析之pandas统计分析

    下面是关于“基于Python数据分析之pandas统计分析”的完整攻略。 1. pandas的基本介绍 pandas是Python中一个强大的数据处理框架,它提供了灵活的数据结构和数据分析工具,特别适用于处理表格型数据。其主要的数据结构包括序列(Series)和数据框(DataFrame),可以处理各种格式的数据。pandas还提供了聚合、变换、合并和重塑等…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部