从零开始学爬虫(爬取豆瓣),一看就会

Python 爬虫之爬豆瓣TOP250电影 爬虫超详细讲解 零基础入门 先看后赞,养成习惯!!! 点赞收藏,人生辉煌!!! 讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程) 爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。 为什么我们要使用爬虫 互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中。 过去,我们通过书籍、报纸、电视、广播或许信息,这些信息数量有限,且... 阅读详情

一、 准备工作

语言:python
编辑器:pycharm
需要导的包:bs4、re、urllib、xlwt(可以通过左上角file->settings->project->interpreter->右边加号导包)
爬虫就是编写程序模拟浏览器打开网页获取需要的内容
在这里插入图片描述

二、 构建流程

from bs4 import BeautifulSoup #网站解析,获取数据
import re #正则表达式
import urllib.request,urllib.error #指定url
import xlwt #excel操作
import sqlite3 #数据库操作
def main():
    baseurl = "https://movie.douban.com/top250?start="
    #获取数据
    datalist = getData(baseurl)
    #保存文件
    savepath = ".\\豆瓣.xls"
    saveData(datalist, savepath)
    #askUrl(baseurl)
    pass

#获取爬取的网页数据
def getData(baseurl):
    datalist = []
	return datalist

#得到指定一个url的网页内容,后面会将urllib的使用
def askUrl(url):
    #用户代理  表明是什么类型的浏览器
    head = {
        "User-Agent":"Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 85.0.4183.102Safari / 537.36"
    }
    req = urllib.request.Request(url=url,headers=head)
    html = ''
    try:
        res = urllib.request.urlopen(req)
        html = res.read().decode('utf-8')
        return html
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
            pass
        if hasattr(e,"reason"):
            print(e.reason)
            pass
    pass


#保存数据
def saveData(datalist, savepath):
	pass

main()

三、各种工具的使用

1、urllib的使用

urllib 是一个收集了多个涉及 URL 的模块的包:

urllib.request 打开和读取 URL

urllib.error 包含 urllib.request 抛出的异常

urllib.parse 用于解析 URL

urllib.robotparser 用于解析 robots.txt 文件

所以我们可以新建一个testUrllib.py文件,单独测试下urllib的使用

import urllib.request,urllib.error,urllib.parse
#首先定义一个url
url = "http://www.douban.com"
#设置header的user-agent原因是如果不设置,会显示user-agent:python-urllib,从而有时候爬取失败,所以要伪装成是用浏览器打开
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36"
}
#post 将传递的data数据包装起来
data = bytes(urllib.parse.urlencode({"hello":"world"}),encoding='utf-8')
#发出request请求
req = urllib.request.Request(url=url,headers=headers,method='POST',data=data)
res = urllib.request.urlopen(req)
#获取数据  可以看到获取的是豆瓣网的代码,后面我们将对这些内容进行解析获取需要的内容
print(res.read().decode('utf=8'))

在这里插入图片描述

2、bs4 BeautifulSoup的使用

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.

下面有几个常用方法,更多详细的使用可以去看官方文档

from bs4 import BeautifulSoup
import re
file = open("./baidu.html","rb")
html = file.read()
bs = BeautifulSoup(html,"html.parser")
# print(bs.title.string)
# t_list = bs.find_all("a")
# print(t_list)
# 正则表达式搜索
# t_list = bs.find_all((re.compile("a")))
#方法搜索
# def name_is(tag):
#     return tag.has_attr("name")
# t_list = bs.find_all(name_is)
# for i in t_list:
# #     print(i)
# print(t_list)
#关键字查找
# t_list = bs.find_all(id="head")
# for i in t_list:
#     print(i)

#text参数
# t_list = bs.find_all(text="hao123")
# for i in t_list:
#     print(i)
#     pass
#
# t_list = bs.find_all(text=re.compile("\d"))
# for i in t_list:
#     print(i)

#llimit参数
t_list = bs.find_all("a",limit=3)
for i in t_list:
    print(i)
3、xlwt的使用

xlwt 是 Python 用来在 Excel 写入数据和格式化数据的工具包
下面以九九乘法表为例

import  xlwt

workbook = xlwt.Workbook(encoding='utf-8') #创建对象
worksheet = workbook.add_sheet('sheet1') #创建表单  sheet1对应下图标注处
for i in range(0,9):
    for j in range(0,i+1):
    	#将内容写进表单中
        worksheet.write(i,j,"%d * %d = %d"%(i+1,j+1,(i+1)*(j+1)))
        pass
    pass
#将写好的存放到excel中
workbook.save('student.xls')  #这里的student.xls是文件名

在这里插入图片描述

四、正式开始

from bs4 import BeautifulSoup #网站解析,获取数据
import re #正则表达式
import urllib.request,urllib.error #指定url
import xlwt #excel操作

def main():
    baseurl = "https://movie.douban.com/top250?start="
    #获取数据
    datalist = getData(baseurl)
    #保存文件
    savepath = ".\\豆瓣.xls"
    saveData(datalist, savepath)
    pass


#这里使用正则表达式,导入的re包,解析获取的网页内容
#找到链接
findLink = re.compile(r'<a href="(.*?)">')#创建正则表达式对象,表示规则
#找到海报
findImgSrc = re.compile(r'<img .* src="(.*?)"',re.S)
#找到标题
findTitle = re.compile(r'<span class="title">(.*)</span>')
#找到评分
findRate = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
#找到评价人数
findPerson = re.compile(r'<span>(\d*)人评价</span>')
#找到概况
findInq = re.compile(r'<span class="inq">(.*)</span>')
#找到影片相关内容
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)


#爬取网页
def getData(baseurl):
    datalist = []
    for i in range(0, 10): #获取10次   这里是因为爬取的是top250 所以知道有250个
        url = baseurl + str(i*25)
        html = askUrl(url) #保存爬取的网页
        #2.逐一解析数据
        soup = BeautifulSoup(html, "html.parser")
        for item in soup.find_all('div', class_="item"):#查找符合要求的字符串  这里的class后要加个下划线
            data = [] #保存一部电影的信息
            item = str(item)
            # print(item)
            #获取到影片详情的链接
            link = re.findall(findLink, item)[0] #正则表达式查找指定的字符串
            data.append(link) #添加链接

            imgSrc = re.findall(findImgSrc, item)[0]  # 正则表达式查找指定的字符串
            data.append(imgSrc)#添加海报

            title = re.findall(findTitle, item)
            if(len(title) == 2):#添加片名
                ctitle = title[0]
                data.append(ctitle) #添加中文名
                otitle = title[1].replace("/", "")
                data.append(otitle)#添加外文名
                pass
            else:
                data.append(title[0])
                data.append(' ')#留空  为了excel处可以对齐
                pass
            per = re.findall(findPerson, item)[0]
            data.append(per)#添加评价人数

            rating = re.findall(findRate, item)[0]
            data.append(rating)#添加评分

            inq = re.findall(findInq, item) #添加概述
            if len(inq):
                inq = inq[0].replace("。", "")
                data.append(inq)
                pass
            else:
                data.append(" ")
                pass
            bd = re.findall(findBd, item)[0]
            bd = re.sub('<br(\s+)?/>(\s+)?', " ", bd)
            bd = re.sub('/', " ", bd)
            data.append(bd.strip()) #添加
            datalist.append(data)
            pass
        pass
    print(datalist)
    return datalist

#得到指定一个url的网页内容
def askUrl(url):
    #用户代理  表明是什么类型的浏览器
    head = {
        "User-Agent":"Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 85.0.4183.102Safari / 537.36"
    }
    req = urllib.request.Request(url=url,headers=head)
    html = ''
    try:
        res = urllib.request.urlopen(req)
        html = res.read().decode('utf-8')
        return html
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
            pass
        if hasattr(e,"reason"):
            print(e.reason)
            pass
    pass


#保存数据
def saveData(datalist, savepath):
    workbook = xlwt.Workbook(encoding='utf-8', style_compression=0)  # 创建对象
    worksheet = workbook.add_sheet('豆瓣电影250', cell_overwrite_ok=True)  # 创建表单
    col = ('电影详情链接', "图片链接", "影片中文名", "影片外文名", "评分", "评分数", "概况", "相关信息")
   #设置表头
    for i in range(0, 8):
        worksheet.write(0, i, col[i])
        pass
    #将解析后的内容写入excel表中
    for i in range(0, 250):
        print("第{}条".format(i))
        data = datalist[i]
        for j in range(0, 8):
            worksheet.write(i+1, j, data[j])
            pass
        pass
    workbook.save(savepath)
    pass
#运行
main()

结果图如下:
在这里插入图片描述
初识爬虫,还存在各种问题,希望大家可以批评指正
我感觉就是解析网页时候可能会有点问题吧

网络爬虫——python爬取豆瓣评论 网络爬虫,又被称为网络蜘蛛(Web Spider)、网络机器人等。它根据网页地址(URL)爬取网页内容,网页地址(URL)就是我们在浏览器中输入的网站链接。例如:https://www.baidu.com;网络爬虫不仅能够复制网页信息和下载音视频,还可以做到网站的模拟登录和行为链执行。由于需要爬取的网站大多需要先登录才能正常访问,或者需要登录后的cookie值才能继续爬取,所以需要对网站模拟登录。有些网站设置了Referer防盗链,所以需要执行网页浏览行为链。 阅读详情

相关推荐

【愚公系列】《Python网络爬虫从入门到精通》015-案例:爬取豆瓣电影Top 250

在信息丰富的互联网时代,网络爬虫技术为我们提供了获取和分析数据的强大工具。作为一个涵盖了大量影视信息的平台,豆瓣电影以其丰富的用户评分和评论,成为了电影爱好者和研究者的重要资源。而在众多的数据抓取项目中,爬取豆瓣电影Top 250无疑是一个经典且颇具挑战性的案例。在本期文章中,我们将详细解析如何利用Python编写网络爬虫,专门针对豆瓣电影Top 250进行数据抓取。我们将一步步介绍从分析网页结构、构建请求、处理响应,到提取电影信息(如标题、评分、评论等)的整个流程。

愚公智库 12万+

python爬虫-xlwt

这节课来学习一下什么是xlwt库 功能:对excle文件进行创建、写入、修改、删除等操作 import xlwt workbook = xlwt.Workbook(encoding='utf-8') # 创建workbook对象(excle文件) worksheet = workbook.add_sheet('sheet1') # 创建工作表 worksheet.write(0,0,'hello') # 写入数据(行,列,内容) workbook.save('student,xls'

weixin_40960364的博客 658

Python爬虫之豆瓣TOP250爬取

@ 1.

fuyao2209的博客 3912

python爬虫——爬取豆瓣top250电影数据(适合初学者)

爬取豆瓣top250其实是初学者用于练习和熟悉爬虫技能知识的简单实战项目,通过这个项目,可以让小白对爬虫有一个初步认识,因此,如果你已经接触过爬虫有些时间了,可以跳过该项目,选择更有挑战性的实战项目来提升技能。当然,如果你是小白,这个项目就再适合不过了。那么就让我们开始吧!目录一、实战1.对豆瓣网网站进行Ajax分析2.提取数据二、python完整代码(两种方法)bs4方法正则式方法。

长弓同学的python学习笔记 5万+

爬虫豆瓣top250

爬虫豆瓣top250前言一.爬虫是什么二.爬取豆瓣的原因三.爬虫项目步骤1.准备工具2.学习python的相关知识3.爬虫过程讲析四.成果展示五.代码展示 前言 ​ 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,为了解决上述问题,定向抓取相关网

nobleecho的博客 4173

JAVA爬虫(一):豆瓣电影排行榜爬取

最近和[大创队友](https://me.youkuaiyun.com/code6_6)给大创做的APP增添了新功能,新功能中需要用到爬取豆瓣、QQ音乐、哔哩哔哩等网站。所以写下博客记录这一过程,也算是和大家分享一些经验。

patricia的博客 5887

【爬虫实战】最新python豆瓣热榜Top250

如果数据是来自服务端API接口,当你按上图操作翻页时,右侧空白面板处会出现请求记录,此时页面数据就是通过接口返回的;如果像上面这种,翻页操作之后还是空白,说明数据不是通过接口返回的。对于一个目标网站,该如何快速判定页面上的数据来源?首先你需要简单web调试能力,对大多数开发者来说都chrome浏览器应该是不二选择,当然我选中的也是。爱学习的小伙伴,本次案例的完整源码,已上传微信公众号“一个努力奔跑的snail”,后台回复。注意如果不是首次添加数据,需要使用mode='a’追加模式,这样加入的数据没有表头;

玛卡`三少 的博客 357

Python爬虫实战 | 爬取豆瓣电影简介

本案例将介绍如何爬取豆瓣电影简介,以此帮助读者学习如何通过编写爬虫程序来批量地从互联网中获取信息。本案例中将借助两个第三方库——Requests库和BeautifulSoup库。通过Requests库获取相关的网页信息,通过BeautifulSoup库解析大体框架信息的内容,并且将局部信息中最关键的内容提取出来。通过使用第三方库,读者可以实现定向网络爬取和网页解析的基本目标。01首先,需要明确要爬取哪些内容,并精确到需要爬取的网页。在本案例中需要爬取电影的简介,因此选择信息较为全面的豆瓣电影。

Trb201012的博客 1862

使用python爬取豆瓣

https://www.runoob.com/python/python-json.html 我的理解就是告诉网站那边的人我是通过浏览器访问的,防止它分辨出我不是正常用户访问网站。 这里要注意爬数据和调接口不是一回事,调接口我们是直接请求后端的数据,而爬取数据是处理数据。 import json import requests from bs4 import BeautifulSoup import openpyxl wb = openpyxl.Workbook() # 创建工作薄 sheet = w

liulang68的博客 1005

爬虫实战(一)利用scrapy爬取豆瓣华语电影

在学习爬虫之前,翻过知乎上的一个回答:利用爬虫技术能做到哪些很酷很有趣很有用的事情?,这大概是我学习爬虫最初的动力。而现在踏过小白阶段后,便开始也想做这样的事情,结合数据分析或是其他的,做一些有趣的东西。 那从简单的开始,第一个爬虫项目是爬取豆瓣华语电影的数据,后面将利用这部分数据进行分析。 1. 爬取思路 在观察了豆瓣每个影片的链接地址后,写下了主要思路: 在豆瓣电影的选片页面,筛选所有华语(...

SY的博客 6076

【爬虫实战】利用scrapy框架爬取豆瓣图书信息

一、前言 scrapy是基于twisted的异步处理框架,与传统的requests爬虫程序执行流程不同,scrapy使用多线程,将发送请求,提取数据,保存数据等操作分别交给Scheduler(调度器),Downloader(下载器),Spider(爬虫),Pipeline(管道)等爬虫“组件”来完成。多线程的运行框架使得爬虫的效率大大提升,让爬虫程序变得更快,更强。基于以上特点,本文将以爬取豆瓣图书信息为例,简要阐述基于scrapy框架下的爬虫实现流程。 二、爬虫流程以及代码实现 (一)分析需要爬取的

丁鱼教育官方博客 3885

python从零开始学爬虫_从零开始学爬虫(爬取豆瓣),一看就会

一、 准备工作语言:python编辑器:pycharm需要导的包:bs4、re、urllib、xlwt(可以通过左上角file->settings->project->interpreter->右边加号导包)爬虫就是编写程序模拟浏览器打开网页获取需要的内容 二、 构建流程from bs4 import BeautifulSoup #网站解析,获取数据import re #正...

weixin_39805387的博客 205

【Python学习】网络爬虫-爬取豆瓣电影评论

【Python学习】网络爬虫-爬取豆瓣电影评论:本实例实现了庆余年的豆瓣电影评论爬取,使用了requests、bs4模块。requests:是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。requests 模块比urllib模块更简洁。bs4:全名,是编写 python 爬虫常用库之一,主要用来解析 html 标签。

u014481728的博客 1万+

利用scrapy爬取豆瓣top250

##前言(目的) 本文为scrapy爬虫的入门文章,作者尽量将自己刚开始学习所遇到的问题都还原出来,过程尽量写得详细详细再详细。希望通过这篇文章来记录自己刚开始学习爬虫所踩过的一些坑,同时记录下自己处理和解决问题的思路,便于和大家分享交流,同时也希望读者能仅仅只通过这一篇文章,就搭建出一个 demo 可以立马上手跑起来。 在本篇文章中,作者先简单的介绍了爬虫的基本概念和 scrapy 爬虫框架,接着以豆瓣电影TOP250为例,详细讲述 scrapy 的实际运用。由于作者水平有限,若有错误或不恰当之处,还望不

一万年太久,只争朝夕 1万+

西门子博图指令(定时器操作三)

西门子博图定时器中复位定时器功能指令介绍

yue008的博客 8873

Mann-Kendall检验全解析:从原理到11种变体及Python实现

本文全面解析Mann-Kendall检验,从基础原理到应对自相关、季节性等复杂数据的11种关键变体,如Hamed-Rao修正、季节性MK和趋势自由预白化(TFPW)。详细阐述各方法的适用场景与数学原理,并提供完整的Python实战代码,帮助研究者针对不同数据特性选择最稳健的趋势分析方法。

weixin_29050271的博客 459

使用网络爬虫爬取豆瓣电影网站的数据

👨‍💻。

php优质创造者 3102

基于opencv自定义网格板的相机标定软件源码

本软件开发版使用的是VS2013和QT5.7, 安装版的需要安装VS核心库(目录里的vcredist_x64.exe, 已安装VS的不需要)。采用强大的模板匹配算法,本程序适用于自定义大范围网格标定(本例程网格使用的是自己画的网格板31*21*10cm),网格点识别度高,矫正速度快,精度高。 使用步骤 第1步: 打开图片,打开标定工具GridCalibTool.exe, 然后选择打开一张待标定的图(CalibFiles文件夹下的500.jpg)。如下图: 第2步: 提取待标定区域(去掉多余部分,只保留网

qq_33138437的博客 1121

使用Python爬虫爬取豆瓣影评

首先,需要明确一点,爬虫的使用必须遵守法律法规和网站的使用协议,不可以随意抓取和使用网站内容。Python 爬虫介绍 | 菜鸟教程 (runoob.com)我们需要对网页的代码有一定的了解,方便我们寻找需要的代码块,请使用在正当途径上。希望这篇博文能对你有所帮助!

faxingzhongjian的博客 8592

Centos7网络配置(设置固定ip)

刚安装完系统,有的人尤其没有勾选自动网络配置的情况下,是访问不了外网的,本机也连不通虚拟机。或者现在有的是动态ip,几次之后启动ip地址就变了,会导致其他软件或程序之前连接配置要重新更改,很麻烦,下面讲解一下如何配置网络,如何设置成固定ip。

个人笔记git:https://gitee.com/tlangp/note.git 8054

SAP WM模块事务码(TCODE)大全

OL07 Data transfer stor.bins LDK34->RLPLA 仓储位LDK34 ->RLPLA

matinal 當冬夜漸暖 。公众号:matinal 5847

python网络爬虫爬取静态网页

网络爬虫又称网页蜘蛛、网络机器人,是一种按照一定的规则、自动请求万维网网站并提取网络数据的程序或脚本。如果说网络像一张网,那么爬就是网上的一只小电子,在网上爬行的过程中遇到了数据,就把它爬取下来。网络爬虫的常用功能:如图所示。获取大量数据,用来做数据分析公司项目的测试数据,公司业务所需数据Python做爬虫优势1、Python :请求模块、解析模块丰富成熟,强大的Scrapy网络爬虫框架2、PHP :对多线程、异步支持不太好3、JAVA:代码笨重,代码量大。

m0_74198026的博客 3272

MPU6050模块DIY翻车实录:ID能读但数据全为零?原来是这个10uF电容惹的祸

本文详细记录了MPU6050模块调试过程中遇到的ID能读但数据全为零的问题排查过程。通过对比不同参考设计,发现CPOUT引脚10uF电容选择不当是导致数据异常的根源,更换为官方推荐的2.2nF电容后问题解决。文章为硬件开发者提供了宝贵的电路设计经验。

weixin_29158047的博客 319

【Python网络爬虫案例】python爬虫之爬取豆瓣电影信息

豆瓣是一个电影资讯网站,用户可以在网站上查找电影信息、评论电影等。我们希望通过爬虫程序获取豆瓣电影的名称、评分和简介等信息,以便进行数据分析或制作推荐系统。

左手の明天的博客 4193

winform自定义控件(gdi+)(1)———设置透明背景色

本文详细讲解了如何在winform中设置控件的背景色为透明色

qq_34059233的博客 3688

人工智能机器学习基础篇】——深入详解强化学习 基础知识,理解马尔可夫决策过程(MDP)、策略、价值函数等关键概念

人工智能机器学习基础篇】——深入详解强化学习 基础知识,理解马尔可夫决策过程(MDP)、策略、价值函数等关键概念

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1926
上一篇: 数据进制的转换以及定点数的表示(原码、补码、反码、移码)
下一篇: tensorFlow:加载自定义本地图片作为数据集训练GAN
Two_Bits
博客等级 码龄8年 25粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值