Python爬虫详解

打印 上一主题 下一主题

主题 970|帖子 970|积分 2910

1、任务介绍

需求分析
爬取豆瓣电影Top250的基本信息,包括电影的名称,豆瓣评分,评价数,电影概况,电影链接等。
https://movie.douban.com/top250
2、基本流程

2.1、准备工作

通过浏览器查看分析目标网页,学习编程基础规范与Java的一些区别,Python没有主函数,需要自己去定义并判断
  1. def main():#所有程序从这里开始执行
  2.     print("hello")
  3. if __name__=="__main__": #当 当前程序执行时
  4. #调用函数
  5.     main()
复制代码
2.1.1引入模块

作用就是使用模块里封装好的功能
  1. from bs4 import BeautifulSoup#网页解析
  2. import re #正则表达式,进行文字匹配
  3. import urllib.request,urllib.error #指定URL,获取网页数据
  4. import xlwt #进行Excel操作
  5. import sqlite3 # 进行SQLite数据库操作
  6. #若你的Python升级到2.7.9以后,就会引入一个新特性,
  7. #引入了一个新特性,当使用urllib打开https的链接时,会检验一次ssl证书
  8. import ssl
  9. #全局取消证书验证(当项目对安全性问题不太重视时,推荐使用,可以全局取消证书的验证,简易方便)
  10. ssl._create_default_https_context = ssl._create_unverified_context
复制代码
2.1.2构建流程
  1. def main():
  2.     baseurl="https://movie.douban.com/top250"#要爬取的网站的路径
  3.     #1.爬取网页
  4.     datalist=getData(baseurl)#将网站爬取的数据存放在datalist中
  5.     savepath="豆瓣电影Top250.xls"#爬取的数据保存的文件名
  6.     #3.保存数据
  7.     saveData(datalist,savepath)#将爬取的数据保存在指定的文件内
  8. #爬取网页
  9. def getData(baseurl):
  10.     datalist=[]
  11.     return datalist
复制代码
2.2、获取数据

通过HTTP库向目标站点发起请求,请求可以包含额外的header等信息,如果服务器能正常响应,会得到一个Response,便是所要获取的页面内容。伪装head得到的方法
  1. #爬取网页
  2. def getData(baseurl):
  3.     datalist=[]
  4.     for i in range(0,10):#调用获取页面信息的函数,10次
  5.         url=baseurl+str(i*25)#baseurl就是参数start后面的值,其实就是个0
  6.         html=askURL(url)#保存获取到的网页源码
  7.       
  8. #得到指定一个URL的网页内容
  9. def askURL(url):
  10.     #用户代理表示告诉豆瓣服务我们是什么类型的机器,浏览器(本质上是告诉浏览器,我们可以接受什么水平的文件内容)
  11.     head={ #模拟浏览器头部信息,向豆瓣服务器发送消息
  12.         "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36" }
  13.     request=urllib.request.Request(url,headers=head)#伪装成是浏览器去发出请求,防止被看出是爬虫
  14.     html=""
  15.     try:
  16.         #将爬取网页的源码存放在response中(获取一个get请求)
  17.         response = urllib.request.urlopen(request)
  18.         html=response.read().decode("utf-8")#将response中读取到的源代码进行解码
  19.         #print(html)
  20.     except urllib.error.URLError as e:#访问可能出现404,或者其它错误
  21.         if hasattr(e,"code"):
  22.             print(e.code)
  23.         if hasattr(e,"reason"):
  24.             print(e.reason)
  25.     return html
复制代码



2.3、解析内容

得到的内容可能是HTML、json等格式,可以用二面解析库,正则表达式等进行解析[code]#影片详情链接的规则findLink = re.compile(r'<a target="_blank" href="https://www.cnblogs.com/(.*?)">')#创建正则表达式,表示规则(字符窜的模式)#影片图片findImgSrc=re.compile(r'

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表