爬虫豆瓣top250

前言


随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。

一.爬虫是什么


爬虫,即网络爬虫,大家可以理解为在网络上爬行的一只蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛,如果它遇到自己的猎物(所需要的资源),那么它就会将其抓取下来。 比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。

二.爬取豆瓣的原因

在忙碌了一周后的周末,想看电影但不知道看什么,可以通过python爬取豆瓣top250上的数据,瞅瞅有哪些高分的电影,用来度过无聊的周末,而且豆瓣是新手练习爬虫的必爬网站。

三.爬虫项目步骤

1.准备工具

爬虫就只需要一个工具那就是pycharm,学生用户可以通过学生邮箱绑定免费使用专业版一年。
在这里插入图片描述

2.学习python的相关知识

没错本人就是毕业于bilibili大学( •̀ ω •́ )✧

3.爬虫过程讲析

本项目引用了re库,SQLit3库,urlib库和BeautifulSoup库
在这里插入图片描述
Re库:正则表达式,用来匹配字符串,本项目中主要用来从原网页中提取我们需要的电影图片,片名,评分,评价人数,概况,和相关信息。
在这里插入图片描述

主函数:
在这里插入图片描述
从网页中提取数据:该模块利用了BeautifulSoup库和re库。我先获取到网页源码,利用bs函数查取想要的相关信息的标签和里面包括的内容并存进一个列表里,再利用正则表达式进行查找字符串,精确提取我需要的电影信息,并通过re的增删改查功能过滤掉无用信息和无法显示的字符(“\”和空格等),最后存入data列表中。
在这里插入图片描述

在这里插入图片描述
为了防止通过豆瓣的反爬系统,我通过抓取在访问网页时,浏览器向服务器发出的请求,找到了模拟浏览器访问的header文件:“User-Agent”并且写到项目中,通过urlbil进行访问豆瓣网站,在后续调试时通过多次访问过后,被豆瓣识别出异常,出现了404forbidden,需要登录才能查看页面,所以我通过登录后用相同方法抓取到了我的cookie并且加入到我的项目文件中,最后成功进入。

在这里插入图片描述

将我提取到和最终整理到的数据存入数据库中,我用到的是SQLit数据库

在这里插入图片描述
建表
在这里插入图片描述

四.成果展示

将爬取豆瓣top250的数据储存于数据库:SQLit3
在这里插入图片描述
在这里插入图片描述
用flask框架和网站模板制作了一个网页
在这里插入图片描述
在这里插入图片描述
用JavaScript脚本将爬取的数据可视化
在这里插入图片描述

五.代码展示

# -*- codeing = utf-8 -*-
# @Time : 21/11/2021 下午3:22
# @Author : lx
# @File : spider.py
# @Software: PyCharm
import re
import sqlite3
import urllib.request
from bs4 import BeautifulSoup
import xlwt

# 视频链接
findLink = re.compile(r'<a href="(.*?)">')
# 图片
findImgSrc = re.compile(r'<img.*src="(.*?)"', re.S)
# 片名
findTitlle = re.compile(r'<span class="title">(.*)</span>')
# 评分
findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
# 评价人数
findJudge = re.compile(r'<span>(\d*)人评价</span>')
# 概况
findInq = re.compile(r'<span class="inq">(.*)</span>')
# 找到影片的相关内容
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)


def main():
    baseurl = "https://movie.douban.com/top250?start="
    datalist = getData(baseurl)
    dbpath = "movie.db"
    saveData2DB(datalist, dbpath)



#爬取网页
def getData(baseurl):
    datalist = []
    for i in range(0,10):
        url = baseurl + str(i*25)
        html = askURL(url)#保存获取到的网页原码

        #逐一解析
        soup = BeautifulSoup(html,"html.parser")
        for item in soup.find_all('div',class_="item"):   
  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值