博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个简单python爬虫的实现——爬取电影信息
阅读量:6158 次
发布时间:2019-06-21

本文共 2865 字,大约阅读时间需要 9 分钟。

  最近在学习网络爬虫,完成了一个比较简单的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 2 3 4 5 6 7 

根据上面的网页代码,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=025 while i < 25:26 print(metas[i].get_text())27 print(date[i].get_text())28 i=i+129 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等前端知识你也要有一定了解。爬虫是模拟人去收集网站数据的,有些网站以及建立了反爬虫技术。所以爬虫的技术也在不断更新。

 

转载于:https://www.cnblogs.com/dzswise/p/9682491.html

你可能感兴趣的文章
很多想法、很多感慨。
查看>>
Java代码质量检测评估工具-Findbugs
查看>>
unix、linux 命令
查看>>
将在本地创建的Git仓库push到Git@OSC
查看>>
dnspod-sr的安装和使用
查看>>
数据结构分析之——图
查看>>
linux基础
查看>>
Linux下搭建yum服务器
查看>>
重装mysql遇到的问题
查看>>
畅捷通T3、T6服务器系统环境重装工作流程
查看>>
LDS文件格式分析
查看>>
redhat7基本命令操作
查看>>
Laravel- 数据库迁移
查看>>
高考前几天我们应该干什么?
查看>>
网络排错实践(一)
查看>>
MySQL 数据类型
查看>>
头文件
查看>>
ubuntu开启SSH服务和允许root远程SSH登录
查看>>
如何让 Hyper-V 和 VMware 虚拟机软件共存?
查看>>
从发小(一起长大的玩伴)聚会引发的思考
查看>>