02

01.爬虫介绍
# 1、什么是互联网?
    互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样。

# 2、互联网建立的目的?
    互联网的核心价值在于数据的共享/传递:数据是存放于一台台计算机上的,而将计算机互联到一起的目的就是为了能够方便彼此之间的数据共享/传递,否则你只能拿U盘去别人的计算机上拷贝数据了。

# 3、什么是上网?爬虫要做的是什么?
    我们所谓的上网便是由用户端计算机发送请求给目标计算机,将目标计算机的数据下载到本地的过程。
    # 3.1 只不过,用户获取网络数据的方式是:
      浏览器提交请求->下载网页代码->解析/渲染成页面。

    # 3.2 而爬虫程序要做的就是:
      模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放于数据库或文件中
 
    # 3.1与3.2的区别在于:
      我们的爬虫程序只提取网页代码中对我们有用的数据

# 4、总结爬虫
    # 4.1 爬虫的比喻:
      如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的猎物/数据

    # 4.2 爬虫的定义:
      向网站发起请求,获取资源后分析并提取有用数据的程序 

    # 4.3 爬虫的价值:
      互联网中最有价值的便是数据,比如天猫商城的商品信息,链家网的租房信息,雪球网的证券投资信息等等,这些数据都代表了各个行业的真金白银,可以说,谁
掌握了行业内的第一手数据,谁就成了整个行业的主宰,如果把整个互联网的数据比喻为一座宝藏,那我们的爬虫课程就是来教大家如何来高效地挖掘这些宝藏,掌握了爬
虫技能,你就成了所有互联网信息公司幕后的老板,换言之,它们都在免费为你提供有价值的数据。

 02.爬虫应用
# 1.通用爬虫:通用爬虫是搜索引擎(Baidu、Google、Yahoo等)“抓取系统”的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。   1)搜索引擎如何抓取互联网上的网站数据?      a)门户网站主动向搜索引擎公司提供其网站的url      b)搜索引擎公司与DNS服务商合作,获取网站的url      c)门户网站主动挂靠在一些知名网站的友情链接中 # 2.聚焦爬虫:聚焦爬虫是根据指定的需求抓取网络上指定的数据。   例如:
     获取豆瓣上电影的名称和影评,而不是获取整张页面中所有的数据值。

03.爬虫基本流程

# 1、发起请求: 
  使用http库向目标站点发起请求,即发送一个Request
  Request包含:请求头、请求体等

# 2、获取响应内容
  如果服务器能正常响应,则会得到一个Response
  Response包含:html,json,图片,视频等

# 3、解析内容
  解析html数据:正则表达式,第三方解析库如Beautifulsoup,pyquery等
  解析json数据:json模块
  解析二进制数据:以b的方式写入文件

 



import
requests # 导入requests请求库 # 向百度主页发送请求,获取响应对象 # response = requests.get(url='https://www.baidu.com/') # 设置字符编码为utf-8 # response.encording = 'utf-8' # 打印响应文本 # print(response.text) # 将响应文本写入本地 # with open('baidu.html', 'w', encoding='utf-8')as f: # f.write(response.text) ''' 视频选项: 1.梨视频 ''' # import requests # 向视频源地址发送请求 # response = requests.get('https://video.pearvideo.com/mp4/short/20190625/cont-1568862-14057323-hd.mp4') # 打印二进制流,例如图片,视频等数据 # print(response.content) # 保存视频到本地 # with open('视频.mp4', 'wb')as f: # f.write(response.content) # import requests # # response = requests.get( # 'https://video.pearvideo.com/mp4/adshort/20190625/cont-1570107-14054821_adpkg-ad_hd.mp4') # print(response.content) # with open('视屏.mp4', 'wb')as f: # f.write(response.content) ''' 1.先往梨视频主页发送请求 https://video.pearvideo.com/ 解析获取所有视频的id video_1570302 re.findall() 2.获取视频详情页url: ''' # import requests # import re # 正则,用于解析文本数据 # 先往梨视频主页发送请求 # response = requests.get('https://video.pearvideo.com/') # print(response.text) # re正则匹配所有的视频id # 参数1:正则匹配规则 # 参数2:解析文本 # 参数3:匹配模式 # res_list = re.findall('<a href="video_(.*?)"', response.text, re.S) # print(res_list) # 拼接每一个视频详情页url # for v_id in res_list: # detail_url = 'https://www.pearvideo.com/video_' + v_id # print(detail_url) # 对每一个视频详情页发送请求获取视频源url # response = requests.get(url=detail_url) # print(response.text) # 解析并提取视频详情页url # 视频url # video_url = re.findall('scrurl="(.*?)"', response.text, re.S)[0] # print(video_url) # 视频名称 # video_name = re.findall('<h1 class="video-tt">(.*?)</h1>', response.text, re.S)[0] # print(video_name) # 向视频url发送请求获取视频二进制流 # v_response = requests.get(video_url) # with open('%s.mp4' % video_name, 'wb')as f: # f.write(v_response.content) # print(video_name, '视频爬取完成') # main+回车键 # if _name_ == '_main_': # num=10 # base_url = 'https://movie.douban.com/top250?start={}&filter='.format(num) # num = 0 # for line in range(10): # base_url = f'https://movie.douban.com/top250?start={num}&filter=' # num += 25 # print(base_url) # 1.发送请求,调用函数 # response = get_page(base_url) #2.解析文本 # movie_list=parse_index(response.text) #3.保存数据 #数据的格式化 # for movie in movie_list: #print(movie) #解压赋值 #电影排名、电影url、电影名称、导演-主演-类型、电影评分、评价人数、电影简介 # v_top,v_url,v_name,v_daoyan,v_point,v_num,v_desc=movie # v_top=movie[0] # v_url=movie[1] # movie_content=f # print(movie_content) #保存数据 # save_data(movie_content) import requests import re #爬虫三部曲 #1.发送请求 def get_page(base_url): response=requests.get(base_url) return response #2.解析文本 def parse_index(text): res=re.findall('<div class="item">.*?<em class=''>(.*?<a href="(.*?)">)') # print(res) return res #3.保存数据 def save_data(data): with open('douban.txt','a',encoding='utf-8')as f: f.write(data)

 

posted on 2019-06-26 20:25  LIGOU李狗嗨  阅读(248)  评论(0)    收藏  举报

导航