Python爬虫初识

因为对爬虫机制的好奇,所以就找了找资料,做一下这方面的笔记。

文章目录

  • 一、爬虫简介
  • 二、爬取实例
    • 2.1爬取步骤
    • 2.2代码实现
  • 三、小结

一、爬虫简介

网络爬虫是指在互联网上自动爬取网站内容信息的程序,也被称作网络蜘蛛或网络机器人。而之所以叫网络爬虫(Web crawler)也可能是因为它们可以沿着网络爬行。它们的本质就是一种递归方式。其位于许多新式的网络技术领域彼此交叉的中心地带,在这里的“爬行”也只是一种形象化的比喻而已,真正到了实际操作层面是指我们从一个网页跳转到另一个网页,以一种递归的方式来获取我们感兴趣的信息的方法。

二、爬取实例

2.1爬取步骤

在真正爬取信息之前,我会先按照我的习惯理清一下思路:

1、获取数据。这里我是使用了urllib.request.urlopen函数,来获取HTML数据。
2、解析数据。因为单纯的HTML数据对于我们来说是没有什么用的,所以就需要使用BeautifulSoup库来解析获取到的Html文档数据将其转换为Python所能处理的数据结构,中间用到了一些正则表达式。
3、保存数据。因为数据比较少,所以就保存到了一个CSV文件中了。

2.2代码实现

#-*- coding=utf-8 -*-
#@Time : 2020/7/3 9:18
#@Author : wangjy
#@File : Spider2.py
#@Software : PyCharm

from bs4 import BeautifulSoup
from urllib.request import Request,urlopen
import re
import csv

startUrl="https://movie.douban.com/top250?start="        #定义全局变量url

#获取数据
def GetData(url):
    head = {  # 伪装成浏览器头部信息,向豆瓣服务器发送消息
        "User-Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64;rv: 77.0) Gecko / 20100101 Firefox / 77.0"
    }
    request=Request(url,headers=head)       #封装好我们的请求信息
    html=''
    try:
        response=urlopen(request)       #使用请求来获取HTML文件
        html=response.read().decode('utf-8')    #选择utf-8的方式来对数据进行解码
    except:
        print("获取数据失败!")

    return html

findLink=re.compile(r'href="(.*?)"')   #创建正则表达式对象
findRating=re.compile(r'(.*)')
findMovieName=re.compile(r'(.*)')

#解析数据
def ParseData(startUrl):
    dataList=[]
    try:
        for i in range(0,10):
            html=GetData(startUrl+str(i*25))
            soup=BeautifulSoup(html,'html.parser')      #做一锅美味的汤
            data=soup.find_all('div',{'class':'info'})
            for item in data:
                item=str(item)
                link=re.findall(findLink,item)[0]
                rate=re.findall(findRating,item)[0]
                movieName=re.findall(findMovieName,item)[0]
                dataList.append([movieName,rate,link])
    except:
        print("解析数据失败!")

    for item in dataList:
        print(item)
    return dataList

#保存数据
def SaveData(dataList):
    csvFile = open("豆瓣电影T250.csv", 'w+',newline='')
    try:
        writer = csv.writer(csvFile)
        writer.writerow(('电影名字', '电影评分','电影链接'))
        rows=len(dataList)
        for i in range(0,rows):
            writer.writerow(dataList[i])
    finally:
        csvFile.close()

if __name__ == '__main__':
    dataList= ParseData(startUrl)
    SaveData(dataList)

实现效果:

Python爬虫初识_第1张图片

注:在bs4的官方文档中对其名字做了一点解释, BeautifulSoup 库的名字取自刘易斯 ·卡罗尔在《爱丽丝梦游仙境》里的同名诗歌,在这里隐喻有化腐朽为神奇之意。

三、小结

在爬虫的道路上感觉自己还是个小白,但是在整个过程也是学到了不少的东西,了解了一些基本的爬虫现在之后仍感觉很有意思。爬虫的确是一个很好的获取数据的工具,日后有机会会再深入了解一下。

参考资料:《Python网络数据集》《Python爬虫技术5天速成》视频

你可能感兴趣的:(Python)