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

yizhihongxing

让我详细讲解一下“详解使用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中把数据框架列转换成索引

    要在Python-Pandas中把数据框架列转换成索引,可以使用 set_index() 函数。该函数可将给定的一列或多列转化成索引,并返回一个新的数据帧。以下是详细步骤: 安装Pandas库: 如果你的环境中没有安装Pandas库,需要先安装。可以使用以下命令: !pip install pandas 导入Pandas库: import pandas as…

    python-answer 2023年3月27日
    00
  • 在Python Pandas中将列向左对齐

    在Python Pandas中,可以使用以下方式将列向左对齐: 使用pandas.DataFrame.style对象的set_properties方法设置表格中的CSS样式,其中text-align可以设置文本在单元格中的对齐方式。例如,将所有列都向左对齐可以使用以下代码: “`python import pandas as pd df = pd.Data…

    python-answer 2023年3月27日
    00
  • python中DataFrame数据合并merge()和concat()方法详解

    Python中DataFrame数据合并Merge()和concat()方法详解 在数据分析中,经常需要将多个数据源中的数据合并到一起,这就需要涉及到数据合并的相关操作。Python中Pandas库提供了两个主要的方法可以用于数据合并:merge()和concat()。 Merge()方法详解 merge()方法可以将多个数据集(DataFrame)按照一些…

    python 2023年5月14日
    00
  • 如何利用pandas工具输出每行的索引值、及其对应的行数据

    要利用pandas工具输出每行的索引值及其对应的行数据,可以使用pandas.DataFrame.iterrows()方法。该方法可迭代每一行的索引及其对应的行数据,返回值为元组类型,包含索引和相应的数据。 以下是详细的步骤: 导入pandas库,并读取数据源文件。 import pandas as pd df = pd.read_csv(‘data.csv…

    python 2023年5月14日
    00
  • 如何在Pandas中排除列

    在 Pandas 数据分析中,有时候我们需要从数据集中选择特定的列进行分析,而忽略掉其他的列。在这种情况下我们需要在 Pandas 中排除列。以下是在 Pandas 中排除列的完整攻略。 准备数据 首先,我们需要准备一份数据样本,这里以 Titanic 数据集为例: import pandas as pd # 读取数据集 df = pd.read_csv(‘…

    python-answer 2023年3月27日
    00
  • Python中的Pandas分析

    Pandas是Python中一款流行的数据分析工具,它提供了高效的数据结构和数据分析工具,使得数据分析变得更加简单和可靠。Pandas主要包含两种数据结构:Series和DataFrame。 Series Series是Pandas中的一种一维数组,可以看作是数组和字典的混合体。第一列是索引,第二列是值。Series可以使用多种方式构建: import pa…

    python-answer 2023年3月27日
    00
  • Pandas数据分析之pandas文本处理

    那我为您介绍一下“Pandas数据分析之pandas文本处理”的完整攻略。 导入Pandas库 在使用Pandas进行文本处理之前,需要先导入Pandas库。代码如下: python import pandas as pd 加载文本数据 Pandas支持多种数据格式,包括CSV、Excel、SQL等。以CSV格式的数据为例,可以使用read_csv()函数加…

    python 2023年5月14日
    00
  • Anaconda超详细保姆级安装配置教程

    Anaconda超详细保姆级安装配置教程 简介 Anaconda是一个流行的Python发行版,它集成了众多常用的科学计算和数据分析包,为用户提供了一个方便和快速的工具箱。 本文将提供一份Anaconda的安装和配置教程,使Python初学者能够尽快地获得使用Anaconda的技能。 步骤一:下载和安装Anaconda 在Anaconda官网下载对应操作系统…

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