【Python-爬虫实战01】top250获取

这篇具有很好参考价值的文章主要介绍了【Python-爬虫实战01】top250获取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


网络爬虫是一种获取互联网上数据的方法,但在实际应用中,需要注意网站可能采取的反爬虫策略。本文将介绍如何使用Python爬取xx电影Top250的数据,并探讨一些常见的反爬虫策略及应对方法。

1. 导入库

首先,需要导入requests库和BeautifulSoup库,以及csv库。

requests库用于访问目标网站,获取网页数据。
BeautifulSoup库用于处理requests获得的数据进行解析和处理。
csv库用于最后数据的存储。

import requests
from bs4 import BeautifulSoup
import csv

2. 发送HTTP请求获取页面内容

我们使用requests.get()函数发送GET请求,并模拟浏览器的请求头信息,以减少被网站识别为爬虫的风险。

url = 'https://movie.douban.com/top250'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
}
response = requests.get(url, headers=headers)

3. 解析HTML内容

创建一个BeautifulSoup对象,并指定解析器和要解析的内容。

soup = BeautifulSoup(response.text, 'html.parser')

4. 定位和提取电影信息

两种方式:

4.1 select_one()

定位电影信息:根据HTML结构和标签的特点,使用BeautifulSoup提供的选择器方法定位电影信息的HTML元素。豆瓣电影Top250的每个电影都包含在一个class为’item’的div标签中,可以使用find_all方法定位所有的电影项。例如:

movie_items = soup.find_all('div', class_='item')

提取电影信息:遍历电影项列表,逐个提取电影的各个信息。可以使用find方法和CSS选择器来定位电影信息的具体元素。例如,电影的标题位于class为’title’的span标签中,可以使用select_one方法和CSS选择器提取标题。其他信息如评分、导演、演员等也可以通过类似的方式提取。例如:

for item in movie_items:
 title = item.select_one('.title').text
 rating = item.select_one('.rating_num').text
 director = item.select('.bd p')[0].text.strip()
 actors = item.select('.bd p')[1].text.strip()
 # 其他信息的提取...

4.2 find()

根据网页的HTML结构,使用find_all()方法定位包含电影信息的HTML元素,并使用循环遍历提取所需的信息。

movies = soup.find_all('div', class_='item')
data = []
for movie in movies:
    title = movie.find('span', class_='title').text # 电影名
    rating = movie.find('span', class_='rating_num').text #
    bd = (
        movie.find("div", class_="bd")
        .text.replace(" ", "")
        .replace("\n\n\n", "\n")
        .replace("\n\n", "\n")
        .split("\n")
    )
    data.append([title, rating])

5. 存储数据

将提取的电影信息存储到CSV文件中,以便后续分析和使用。

with open(r"测试\movies.csv", "w", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerow(["电影名", "导演", "主演", "时间/地区/类型", "评分", "评价人数", "一句话评价"])
    writer.writerows(data)

遇到的问题:

1、处理数据时,正常存储显示的中文在写入到csv文件时变成了乱码,文件的编码未能正确处理中文,需要在写入csv文件时指定编码。

2、写入多出一行空白行

解决办法:

with open(filename, 'a', newline='', encoding='utf-8-sig') as f: 
    # 数据存储

6. 反爬虫策略及应对方法

在进行网页数据爬取时,网站可能采取一些反爬虫策略,例如设置访问频率限制、使用验证码、检测请求头信息等。以下是一些常

见的反爬虫策略及应对方法:

  • 访问频率限制:使用time.sleep()函数随机延时,以避免过于频繁的请求。
  • 使用代理IP:通过使用代理IP进行请求,隐藏真实的请求来源。
  • 处理验证码:如果遇到验证码,可以使用第三方库进行自动识别或手动输入验证码。

请注意,尊重网站的爬虫规则是非常重要的,不要过度请求或对网站造成过大的负载。

完整代码及运行结果

import requests
from bs4 import BeautifulSoup
import csv

url = "https://movie.douban.com/top250"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36"
}
response = requests.get(url=url, headers=headers)
print(response.status_code)
soup = BeautifulSoup(response.text, "html.parser")

movies = soup.find_all("div", class_="item")
# print(movies)
data = []
for movie in movies:
    title = movie.find("span", class_="title").text
    # rating = movie.find("span", class_="rating_num").text
    # inq = movie.find("span", class_="inq").text
    bd = (
        movie.find("div", class_="bd")
        .text.replace(" ", "")
        .replace("\n\n\n", "\n")
        .replace("\n\n\n", "\n")
        .split("\n")
    )
    bd = [x for x in bd if x != ""]
    bd = [x for y in bd for x in y.split("   ", 1)]
    data.append([title] + bd)

with open(r"测试\movies.csv", "w", newline="", encoding="utf-8-sig") as file:
    writer = csv.writer(file)
    writer.writerow(["电影名", "导演", "主演", "时间/地区/类型", "评分", "评价人数", "一句话评价"])
    writer.writerows(data)

print("数据爬取完成并存储到movies.csv文件中。")

以上是使用Python爬取豆瓣电影Top250的完整代码。运行代码后,将会爬取电影的标题和评分信息,并存储到名为movies.csvCSV文件中。

python爬取豆瓣电影top250,python爬虫,python,开发语言,爬虫

结语:
通过以上步骤,学习了如何使用Python和requests库爬取豆瓣电影Top250的数据,并介绍了一些常见的反爬虫策略及应对方法。希望本文能对您在网络爬虫项目中有所帮助,祝您成功获取所需的数据。

请记住,在进行爬虫行为时,应遵守法律法规和网站的爬虫规则,尊重网站的服务端资源。谨慎和负责任地使用爬虫技术,为网络空间的发展贡献自己的一份力量。文章来源地址https://www.toymoban.com/news/detail-524907.html

到了这里,关于【Python-爬虫实战01】top250获取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 爬虫项目实战:利用基于selenium框架的爬虫模板爬取豆瓣电影Top250

    👋 Hi, I’m @货又星 👀 I’m interested in … 🌱 I’m currently learning … 💞 I’m looking to collaborate on … 📫 How to reach me … README 目录(持续更新中) 各种错误处理、爬虫实战及模板、百度智能云人脸识别、计算机视觉深度学习CNN图像识别与分类、PaddlePaddle自然语言处理知识图谱、

    2024年02月04日
    浏览(35)
  • python爬取豆瓣电影排行前250获取电影名称和网络链接[静态网页]————爬虫实例(1)

    目录 1.算法原理: 2.程序流程: 3.程序代码: 4.运行结果(部分结果展示): 5.结果分析: (1)利用import命令导入模块或者导入模块中的对象; ①利用requests库获取数据; ②用BeautifulSoup库将网页源代码转换成BeautifulSoup类型,以便于数据的解析和处理; ③用time库进行时间延时

    2023年04月16日
    浏览(37)
  • python爬虫项目——豆瓣Top250

    我们今天讲一个爬虫项目案例,实现对豆瓣电影top榜的爬取 。把爬取的数据存到我们电脑本地文件当中。通过这个项目可以让我们真正感受到爬虫的带给我们的乐趣。现在我来讲一下思路以及实现方法,因为豆瓣电影的这个反爬机制不高,所以我们可以通过这个案列快速上手

    2024年02月11日
    浏览(48)
  • Python爬取豆瓣电影Top 250,豆瓣电影评分可视化,豆瓣电影评分预测系统

    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选

    2024年03月21日
    浏览(61)
  • 【python】爬取豆瓣电影排行榜TOP250存储到CSV文件中【附源码】

           代码首先导入了需要使用的模块:requests、lxml和csv。         如果出现模块报错         进入控制台输入:建议使用国内镜像源          我大致罗列了以下几种国内镜像源:              设置了请求头部信息,以模拟浏览器的请求,函数返回响应数据

    2024年02月04日
    浏览(36)
  • 【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】

       近年来,Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程 序,用于抓取豆瓣电影Top250的相关信息,并将其保存为Excel文件。          程序包含以下几个部分:            导入模块:程序导入了 BeautifulSoup、re、urllib.request、urllib

    2024年02月03日
    浏览(40)
  • 爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】

    在本篇博客中,我们将使用 Python 的 Selenium 和 BeautifulSoup 库来实现一个简单的网页爬虫,目的是爬取豆瓣电影TOP250的数据,并将结果保存到Excel文件中。 Selenium 是一个自动化测试工具,可以模拟用户在浏览器中的交互操作。我们将使用 Selenium 来打开网页、获取网页源码。 B

    2024年02月12日
    浏览(35)
  • python爬虫爬取top250中排名、评分、导演等展示可视化界面

    源代码+4千字报告     需要源代码+数据库+可视化+数据+4千字报告加我qq    

    2024年02月13日
    浏览(27)
  • 爬取豆瓣Top250图书数据

    项目的实现步骤 1.项目结构 2.获取网页数据 3.提取网页中的关键信息 4.保存数据 1.项目结构 2.获取网页数据 对应的网址为https://book.douban.com/top250 3.提取网页中的关键信息 获取传出的解析后的数据,获取对应的图片,书名,作者,价格,评价,简介 将获取的数据存入到字典中

    2024年02月08日
    浏览(31)
  • Python爬虫实战-批量爬取豆瓣电影排行信息

    大家好,我是python222小锋老师。 近日锋哥又卷了一波Python实战课程-批量爬取豆瓣电影排行信息,主要是巩固下Python爬虫基础 视频版教程: Python爬虫实战-批量爬取豆瓣电影排行信息 视频教程_哔哩哔哩_bilibili Python爬虫实战-批量爬取豆瓣电影排行信息 视频教程作者:小锋老师

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包