zoukankan      html  css  js  c++  java
  • 一个简单python爬虫的实现——爬取电影信息

      最近在学习网络爬虫,完成了一个比较简单的python网络爬虫。首先为什么要用爬虫爬取信息呢,当然是因为要比人去收集更高效。

    网络爬虫,可以理解为自动帮你在网络上收集数据的机器人。

      网络爬虫简单可以大致分三个步骤:

        第一步要获取数据,

        第二步对数据进行处理,

        第三步要储存数据。

      获取数据的时候这里我用到了python的urllib标准库,它是python中非常方便抓取网页内容的一个模块。

      具体为:

      这里我要爬取的是电影天堂一个电影页面的电影名称,日期等数据。

     1 from urllib import request
     2 def get_data ( ):
     3     url='http://www.dytt8.net/html/gndy/dyzz/list_23_1.html'
     4     headers={'User-Agent': ' Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' }
     5     req=request.Request(url, headers=headers)
     6     response=request.urlopen(req)
     7     # print (type(response)) #响应对象的类型
     8     # print(response.getcode()) #响应状态码
     9     # print(response.info())
    10     if response.getcode() == 200:
    11         data=response.read()#读取响应的结果
    12         data =str(data,encoding='gb2312')
    13         #print(data)
    14         #将数据写入文件中
    15         with open ('index.html',mode='w',encoding='gb2312') as  f:
    16             f.write(data)

        这里的headers是一个参数,就是你的浏览器在访问服务器的时候,会让服务器知道你的浏览器的一些信息,还有操作系统等信息。if 函数来判断当网站成功响应的时候,会返回一个200.这时候读取响应的数据结果,就是网页的代码。这里我做了一个字符串转化处理,根据网页代码显示编码为gb2312,所以这时候只要将encoding设置为gb2312就可以了。

        

    1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2 
    3 <html xmlns="http://www.w3.org/1999/xhtml">
    4 
    5 <head>
    6 
    7 <META http-equiv=Content-Type content="text/html; charset=gb2312">

    根据上面的网页代码,charset为gb2312判断的。  

        当我们存取了网页数据后,发现它还是html格式的,而且有很多html,css的代码,但是我们只想要其中的文字信息,这时候怎么办呢。

        这时候就要用到一个强大的数据处理模块,beautifusoup4,俗称美味汤。安装好这个模块后。我们就可以对我们的html文件做进一步的处理,提取我们需要的信息。

       

     1 from urllib import request
     2 from bs4 import BeautifulSoup
     3 def get_data ( ):
     4     url='http://www.dytt8.net/html/gndy/dyzz/list_23_1.html'
     5     headers={'User-Agent': ' Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' }
     6     req=request.Request(url, headers=headers)
     7     response=request.urlopen(req)
     8     # print (type(response)) #响应对象的类型
     9     # print(response.getcode()) #响应状态码
    10     # print(response.info())
    11     if response.getcode() == 200:
    12         data=response.read()#读取响应的结果
    13         data =str(data,encoding='gb2312')
    14         #print(data)
    15         #将数据写入文件中
    16         with open ('index.html',mode='w',encoding='gb2312') as  f:
    17             f.write(data)
    18 def parse_data():
    19     with open ('index.html',mode='r',encoding='gb2312') as  f:
    20         html = f.read()
    21     bs = BeautifulSoup(html,'html.parser')
    22     metas = bs.select("[class~=ulink]")
    23     date = bs.select("[color=#8F8C89]")
    24     i=0
    25     while i < 25:
    26         print(metas[i].get_text())
    27         print(date[i].get_text())
    28         i=i+1
    29 
    30 
    31 
    32 
    33 if __name__ == '__main__':
    34     #get_data()
    35     parse_data()

      这里我们用到了美味汤中的CSS选择器功能,就是只把我们想要的信息选择处来,根据网页代码,发现class等于ulink的时候后面跟着的信息是我们需要的。还有color=#8F8C89也是我们需要的。使用select方法,将选中的信息筛选出来。最终结果:

    点击0是因为网站显示就是0,估计是网站的问题。这样我们就得到了电影信息以及发布的时间信息。后面还有很多。根据这次简单爬虫的实现,我发现web爬虫除了你要懂python的知识之外,对于html,CSS等前端知识你也要有一定了解。爬虫是模拟人去收集网站数据的,有些网站以及建立了反爬虫技术。所以爬虫的技术也在不断更新。

  • 相关阅读:
    python--tkinter桌面编程开发--记事本
    Python--面向对象编程
    Python--面向对象编程--时钟实例开发
    Python学习笔记--2--面向对象编程
    Python学习笔记--1
    epoll聊天室的实现
    操作系统--虚拟存储器
    操作系统--存储器管理
    操作系统--分页存储管理中逻辑地址转换为物理地址
    操作系统--处理机调度与死锁
  • 原文地址:https://www.cnblogs.com/dzswise/p/9682491.html
Copyright © 2011-2022 走看看