iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >【Python-爬虫实战01】top250获取
  • 421
分享到

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

python开发语言爬虫 2023-09-20 22:09:15 421人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

文章目录 1. 导入库2. 发送HTTP请求获取页面内容3. 解析HTML内容4. 定位和提取电影信息5. 存储数据6. 反爬虫策略及应对方法完整代码及运行结果 网络爬虫是一种获

文章目录


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

1. 导入库

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

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

import requestsfrom bs4 import BeautifulSoupimport 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. 定位和提取电影信息

两种方式:

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() # 其他信息的提取...

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)

遇到的问题:

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

写入多出一行空白行

解决办法:

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

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

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

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

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

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

完整代码及运行结果

import requestsfrom bs4 import BeautifulSoupimport csvurl = "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和requests库爬取豆瓣电影Top250的数据,并介绍了一些常见的反爬虫策略及应对方法。希望本文能对您在网络爬虫项目中有所帮助,祝您成功获取所需的数据。

请记住,在进行爬虫行为时,应遵守法律法规和网站的爬虫规则,尊重网站的服务端资源。谨慎和负责任地使用爬虫技术,为网络空间的发展贡献自己的一份力量。

来源地址:https://blog.csdn.net/mingfeng4923/article/details/131105440

--结束END--

本文标题: 【Python-爬虫实战01】top250获取

本文链接: https://www.lsjlt.com/news/413375.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【Python-爬虫实战01】top250获取
    文章目录 1. 导入库2. 发送HTTP请求获取页面内容3. 解析HTML内容4. 定位和提取电影信息5. 存储数据6. 反爬虫策略及应对方法完整代码及运行结果 网络爬虫是一种获...
    99+
    2023-09-20
    python 开发语言 爬虫
  • Python爬虫教程-01-爬虫介绍
    Python 爬虫的知识量不是特别大,但是需要不停和网页打交道,每个网页情况都有所差异,所以对应变能力有些要求 参考资料 精通Python爬虫框架Scrapy,人民邮电出版社 url, http web前端,html,css,...
    99+
    2023-01-30
    爬虫 教程 Python
  • python-爬虫实战
    想看看最近的电影院播放的今日影视,就以这个网址https://movie.douban.com/people/1166776/为例,先使用urllib.request模块抓取整个网页,再使用re模块获取影视信息 编写simpleCrawle...
    99+
    2023-01-30
    爬虫 实战 python
  • Python爬虫实战之爬取携程评论
    目录一、分析数据源二、分析数据包三、采集全部评论一、分析数据源 这里的数据源是指html网页?还是Aajx异步。对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍。 提示...
    99+
    2024-04-02
  • Python爬虫-01:爬虫的概念及分类
    目录 # 1. 为什么要爬虫 2. 什么是爬虫? 3. 爬虫如何抓取网页数据? # 4. Python爬虫的优势? ...
    99+
    2023-01-30
    爬虫 概念 Python
  • python爬虫实战项目之爬取pixiv图片
    自从接触python以后就想着爬pixiv,之前因为梯子有点问题就一直搁置,最近换了个梯子就迫不及待试了下。 爬虫无非request获取html页面然后用正则表达式或者beautif...
    99+
    2024-04-02
  • bs4爬虫实战四--获取音悦台榜单
    目标分析:本次爬虫使用随机proxy和headers抵抗反爬虫机制,来获取音悦台网站公布的MV榜单.目标网站:http://vchart.yinyuetai.com/vchart/trends爬虫的目的是爬取音悦台网站公布的MV榜单,点击网...
    99+
    2023-01-30
    爬虫 实战 榜单
  • 六个步骤学会使用Python爬虫爬取数据(爬虫爬取微博实战)
    用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。 Python爬虫六部曲 第一步:安装request...
    99+
    2023-09-10
    python 爬虫 python入门 python爬虫 python爬虫爬取网页数据
  • Python爬虫实战之爬取某宝男装信息
    目录知识点介绍实现步骤1. 分析目标网站2. 获取单个商品界面3. 获取多个商品界面4. 获取商品信息5. 保存到MySQL数据库完整代码知识点介绍 本次爬取用到的知识点有: 1. ...
    99+
    2024-04-02
  • bs4爬虫实战一:获取百度贴吧内容
    目标分析:进入百度贴吧,访问: https://tieba.baidu.com/index.html搜索权利的游戏定义需要爬取的数据,爬取每个帖子上面的内容定位到每个帖子,即取 li标签 里面 'class'=&#...
    99+
    2023-01-30
    爬虫 贴吧 实战
  • python网络爬虫实战
    目录一、概述二、原理三、爬虫分类1、传统爬虫2、聚焦爬虫3、通用网络爬虫(全网爬虫)四、网页抓取策略1、宽度优先搜索:2、深度优先搜索:3、最佳优先搜索:4、反向链接数策略:5、Pa...
    99+
    2024-04-02
  • python爬虫实战之爬取百度首页的方法
    这篇文章给大家分享的是有关python爬虫实战之爬取百度首页的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代...
    99+
    2023-06-14
  • Python爬虫实战之虎牙视频爬取附源码
    目录知识点开发环境分析目标url开始代码最开始还是线导入所需模块数据请求获取视频标题以及url地址获取视频id保存数据调用函数运行代码,得到数据知识点 爬虫基本流程 ...
    99+
    2024-04-02
  • Python爬虫实战JS逆向AES逆向加密爬取
    目录爬取目标工具使用项目思路解析简易源码分享爬取目标 网址:监管平台 工具使用 开发工具:pycharm 开发环境:python3.7, Windows10 使用工具包:reque...
    99+
    2024-04-02
  • python实战之Scrapy框架爬虫爬取微博热搜
    前言:大概一年前写的,前段时间跑了下,发现还能用,就分享出来了供大家学习,代码的很多细节不太记得了,也尽力做了优化。 因为毕竟是微博,反爬技术手段还是很周全的,怎么绕过反爬的话要在这...
    99+
    2024-04-02
  • Python爬虫获取基金列表
    目录1 前言2 哪里去获取数据呢3 怎么抓取数据呢1 前言 python爬虫用来收集数据是最直接和常用的方法,可以使用python爬虫程序获得大量的数据,从而变得非常的简单和快速;绝...
    99+
    2024-04-02
  • python爬虫怎么获取图片
    这篇文章主要讲解了“python爬虫怎么获取图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python爬虫怎么获取图片”吧!首先导入库给文件加入头信息,伪装成模拟浏览器访问实现翻页翻页多...
    99+
    2023-06-02
  • python爬虫如何获取数据
    使用Python爬虫获取数据可以分为以下几个步骤: 导入所需的库:通常情况下,使用requests库发送HTTP请求获取网页内容,...
    99+
    2024-02-29
    python
  • bs4爬虫实战二:获取双色球中奖信息
    目标分析:访问双色球网站:http://www.zhcw.com/ssq/kaijiangshuju/index.shtmltype=0 右键查看源代码,发现这个框架的数据来源于:http://kaijiang.zhcw.com/zhcw...
    99+
    2023-01-30
    爬虫 双色球 实战
  • 【猿灰灰赠书活动 - 01期】- 【Python网络爬虫入门到实战】
    说明:博文为大家争取福利,与机械工业出版社合作进行送书活动 图书:《Python网络爬虫入门到实战》 一、好书推荐 图书介绍 本书介绍了Python3网络爬虫的常见技术。首先介绍了网页的基...
    99+
    2023-09-05
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作