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

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

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

    第一步要获取数据,

    第二步对数据进行处理,

    第三步要储存数据。

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

  具体为:

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

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

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

    

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml">

 <head>

 <META http-equiv=Content-Type content="text/html; charset=gb2312">

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

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

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

   

 from urllib import request
from bs4 import BeautifulSoup
def get_data ( ):
url='http://www.dytt8.net/html/gndy/dyzz/list_23_1.html'
headers={'User-Agent': ' Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' }
req=request.Request(url, headers=headers)
response=request.urlopen(req)
# print (type(response)) #响应对象的类型
# print(response.getcode()) #响应状态码
# print(response.info())
if response.getcode() == 200:
data=response.read()#读取响应的结果
data =str(data,encoding='gb2312')
#print(data)
#将数据写入文件中
with open ('index.html',mode='w',encoding='gb2312') as f:
f.write(data)
def parse_data():
with open ('index.html',mode='r',encoding='gb2312') as f:
html = f.read()
bs = BeautifulSoup(html,'html.parser')
metas = bs.select("[class~=ulink]")
date = bs.select("[color=#8F8C89]")
i=0
while i < 25:
print(metas[i].get_text())
print(date[i].get_text())
i=i+1 if __name__ == '__main__':
#get_data()
parse_data()

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

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

一个简单python爬虫的实现——爬取电影信息的更多相关文章

  1. 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...

  2. Python爬虫实例:爬取猫眼电影——破解字体反爬

    字体反爬 字体反爬也就是自定义字体反爬,通过调用自定义的字体文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容的. 现在貌似不少网 ...

  3. Python爬虫实例:爬取豆瓣Top250

    入门第一个爬虫一般都是爬这个,实在是太简单.用了 requests 和 bs4 库. 1.检查网页元素,提取所需要的信息并保存.这个用 bs4 就可以,前面的文章中已经有详细的用法阐述. 2.找到下一 ...

  4. Python爬虫教程-17-ajax爬取实例(豆瓣电影)

    Python爬虫教程-17-ajax爬取实例(豆瓣电影) ajax: 简单的说,就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: ...

  5. Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取

    很多网页的信息都是通过异步加载的,本文就举例讨论下此类网页的抓取. <工作细胞>最近比较火,bilibili 上目前的短评已经有17000多条. 先看分析下页面 右边 li 标签中的就是短 ...

  6. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

  7. python爬虫-基础入门-爬取整个网站《1》

    python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数 ...

  8. Python 爬虫入门之爬取妹子图

    Python 爬虫入门之爬取妹子图 来源:李英杰  链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果 ...

  9. Python爬虫实战之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖 ...

随机推荐

  1. 填报表导出excel后不可写的单元格处于锁定状态

     填报表单元格分为可写和不可写两种状态,当填报表在web上展现的时候可写单元格可以进行数据填报和修改,非可写单元格不可操作. 报表导出为excel时,润乾导出excel包默认情况下不对excel单 ...

  2. SQL Server 索引知识-结构,实现

    索引的作用毋庸置疑,但他是如何组织,并实现提高语句访问效率的呢?本篇文章为大家做个详细的介绍. 聚集索引架构 B-tree 如图1-1 a.B-tree的结构,叶子节点为数据.数据按照聚集索引键有序排 ...

  3. SPA SEO thought

    angular, vue,ember,backbone等javascript framework大大方便了现代web开发,带来了用户体验的巨大提高,但是同时带来了另一个问题:SEO,由于搜索引擎无法运 ...

  4. Oracle GoldenGate OGG管理员手册(较早资料)

    第一章 系统实现简述 前言 编写本手册的目的是为系统管理员以及相关操作人员提供 Oracle  Goldengat  软 件的日常维护和使用的技术参考: 3 ORACLE 第二章 OGG 日常维护操作 ...

  5. UINavigationController与UITabBarController相关问题

    UINavigationController与UITabBarController相关问题 UINavigationController与UITabBarController混用是非常常见的,有时候会 ...

  6. iOS7中修改StatusBar的显示颜色

    iOS7中修改StatusBar的显示颜色 效果图如下: 在iOS7中想手动修改statusBar的颜色,第一步需要做的就是在plist文件中设置View controller-based statu ...

  7. 使用CAReplicatorLayer [2]

    使用CAReplicatorLayer [2] 工具类 // // Math.h // MathEquation // // Created by YouXianMing on 15/11/20. / ...

  8. Linux 系统的/目录

    根目录下的重要目录 目录 应放置档案内容 /bin 系统有很多放置执行档的目录,但/bin比较特殊.因为/bin放置的是在单人维护模式下还能够被操作的指令.在/bin底下的指令可以被root与一般帐号 ...

  9. for 与forEach的区别

    for循环 for循环,通过下标,对循环中的代码反复执行,功能强大,可以通过index取得元素.在处理比较复杂的处理的时候较为方便. foreach循环 foreach,从头到尾,对于集合中的对象遍历 ...

  10. Java基础知识强化107:DecimalFormat

    1. 引入: 如何控制输出数据的精度? >1. 使用Math.round方法 (1)Java如何把一个float(double)四舍五入到小数点后2位,4位,或者其它指定位数 ? 答:比如,如下 ...