轻松掌握Python爬虫,从入门到精通

 更新时间:2024年03月27日 14:38:22   作者:COMEGy  
Python爬虫学习完整版来了!想成为一名爬虫高手,掌握数据采集的技能吗?这份指南将带你从零开始,一步步掌握Python爬虫的各种技巧,让你轻松获取海量数据,需要的朋友可以参考下

一、什么是爬虫

网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或者脚本。由于互联网数据的多样性和资源的有限性,根据用户需求定向抓取相关网页并分析也成为如今主流的爬取策略。

1 爬虫可以做什么

你可以爬取网络上的的图片,爬取自己想看的视频等等,只要你能通过浏览器访问的数据都可以通过爬虫获取。

2 爬虫的本质是什么

模拟浏览器打开网页,获取网页中我们想要的那部分数据

学习案例:爬取豆瓣电影 Top 250的基本信息

引入第三方模块

# 引入第三方模块
from bs4 import BeautifulSoup #网页解析,获取数据
import re    #正则表达式,进行文字匹配
import urllib.request,urllib.error   #制定URL,获取网页数据
import xlwt    #进行Excel操作
import sqlite3   #进行数据库操作

正则表达式——制定获取数据规则

# 影片详情链接规则
findLink=re.compile(r'<a href="(.*?)">')   #创建正则表达式对象,表示规则(字符串模式)
findImg=re.compile(r'<img.*src="(.*?)?"',re.S)  #影片图片
findTitle=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>')   #影片评价人数
findIng=re.compile(r'<span class="ing">(.*)</span>')   #找到概况
findBd=re.compile(r'<p class="">(.*?)</p>',re.S)   #找到影片的相关内容
 

完整代码

# 引入第三方模块
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=".\\豆瓣电影Top250.xls"
 
# 影片详情链接规则
findLink=re.compile(r'<a href="(.*?)">')   #创建正则表达式对象,表示规则(字符串模式)
findImg=re.compile(r'<img.*src="(.*?)?"',re.S)  #影片图片
findTitle=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>')   #影片评价人数
findIng=re.compile(r'<span class="ing">(.*)</span>')   #找到概况
findBd=re.compile(r'<p class="">(.*?)</p>',re.S)   #找到影片的相关内容
 
def getData(baseurl):
    dataList=[]
    for i in range(0,10):# 调用获取页面信息的函数 10次
        url=baseurl+ str(i*25)
        html=askURL(url)   # 保存获取到的源码
        soup=BeautifulSoup(html,"html.parser")
        for item in soup.find_all('div',class_="item"):  #查找符合要求的字符串
            data=[] #保存电影信息
            item =str(item)
            #获取影片详情链接
            link=re.findall(findLink,item)[0]   #re库用来通过正则表达式查找指定的字符串
            data.append(link)    #添加链接
            imgSrc=re.findall(findImg,item)[0]
            data.append(imgSrc)  #添加图片
            titles=re.findall(findTitle, item)[0]
            if(len(titles)==2):              #片名可能有两个名字,一个中文,一个外文
                ctitle=titles[0]
                data.append(ctitle)           #添加中文名
                otitle=titles[1].replace("/","")
                data.append(otitle)            #添加外文名
            else:
                data.append(titles[0])  # 添加图片
                data.append(' ')            #留空,保持Excel数据一致性
 
            rating=re.findall(findRating, item)[0]
            data.append(rating)  # 添加评分
 
            judgeNum = re.findall(findJudge, item)[0]
            data.append(judgeNum)  # 添加评分人数
 
            ing = re.findall(findIng, item)
            if len(ing)!=0:
                ing=ing[0].replace("。","")
                data.append(ing)  # 添加概述
            else:
                data.append(" ")
            bd = re.findall(findBd, item)[0]
            bd=re.sub('<br(\s+)?/>(\s+)?'," ",bd)
            bd=re.sub('/'," ",bd)
            data.append(bd.strip())  # 添加影片的相关内容
 
            dataList.append(data)    #把处理好的电影信息放入dataList
        print(dataList)
    return dataList
 
# 得到指定一个URL的网页内容
def askURL(url):
    # head用户代理,本质上告诉浏览器我们接收什么水平的数据
    head={
        "User-Agent": "Mozilla / 5.0(Linux;Android6.0;Nexus5 Build / MRA58N) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 80.0.3987.87 Mobile Safari / 537.36"
    }
    request=urllib.request.Request(url,headers=head)
    html=""
    try:
        response=urllib.request.urlopen(request)
        html=response.read().decode("utf-8")
        # print(html)
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e.reason)
 
    return html
 
 
def saveData(savepath):
    print("save.....")
 
 
if __name__ =="__main__":
    # 调用函数
    main()

到此这篇关于轻松掌握Python爬虫,从入门到精通的文章就介绍到这了,更多相关Python爬虫学习内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pycharm配置安装autopep8自动规范代码的实现

    pycharm配置安装autopep8自动规范代码的实现

    这篇文章主要介绍了pycharm配置安装autopep8自动规范代码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 如何在Python3中使用telnetlib模块连接网络设备

    如何在Python3中使用telnetlib模块连接网络设备

    这篇文章主要介绍了如何在Python3中使用telnetlib模块连接网络设备,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • python实现三次密码验证的示例

    python实现三次密码验证的示例

    这篇文章主要介绍了python实现三次密码验证的示例,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • ID3决策树以及Python实现详细过程

    ID3决策树以及Python实现详细过程

    决策树是我本人非常喜欢的机器学习模型,非常直观容易理解,并且和数据结构的结合很紧密,下面这篇文章主要给大家介绍了关于ID3决策树以及Python实现的相关资料,需要的朋友可以参考下
    2024-01-01
  • Python单例模式的两种实现方法

    Python单例模式的两种实现方法

    这篇文章主要介绍了Python单例模式的相关资料,这里提供了两种实现方法,及注意事项,需要的朋友可以参考下
    2017-08-08
  • python 定时修改数据库的示例代码

    python 定时修改数据库的示例代码

    这篇文章主要介绍了python 定时修改数据库的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 详细过程带你用Python做车牌自动识别系统

    详细过程带你用Python做车牌自动识别系统

    这篇文章主要介绍了带你用Python做车牌自动识别系统的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • python pandas库中DataFrame对行和列的操作实例讲解

    python pandas库中DataFrame对行和列的操作实例讲解

    今天小编就为大家分享一篇python pandas库中DataFrame对行和列的操作实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 一文教你利用Python画花样图

    一文教你利用Python画花样图

    这篇文章主要给大家介绍了关于如何利用Python画花样图的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-10-10
  • Python简单删除列表中相同元素的方法示例

    Python简单删除列表中相同元素的方法示例

    这篇文章主要介绍了Python简单删除列表中相同元素的方法,结合具体实例形式分析了Python使用list、set方法针对列表元素的去重与排序操作实现技巧,非常简单实用,需要的朋友可以参考下
    2017-06-06

最新评论