好看视频

需求分析

爬取首页的视频,并分类存储于相应的文件夹内,视频名为网站上显示的文件名。

页面分析

打开好看视频首页,点击刷新会发现,每一次显示的视频是不一样的,所以爬取到的视频会出现跟看到的不一致的情况。
视频首页有推荐,影视,音乐,vlog,游戏等标签,我们可以设置生成相应名称的文件夹。
选择一个视频,点右键检查。光标定位到<img class 这个标签内,但是在里面只找到图片的utl,没有相对应的视频链接,在网页空白地方点右键,检查网页源码,也没有发现此视频相关的信息,因此可以判断视频数据不在网页源码中。

我们可以通过查看数据接口的方式查看,点击Network(网络) --> XHR ,进入后在网页空白地方点击刷新。

如上图所示,我们点击左侧“文件”下"feed?tab"开头的文件(其他几个文件里的url里均无内容),复制请求url地址,到网页中打开(需要JSONView,浏览器右上角三个点,扩展,把"JSONView-for-Chrome-master"文件夹下的"WebContent"文件拖到浏览器中,重启浏览器就可以了),我们可以看到数据是以嵌套字典的形式存放,我们按照取字典关键字的方式进行取值,就可以得到视频所在的url,直接向这个url发起请求,就可以得到想要的视频

但是经过爬取发现文件中只存放了5个视频,这时我们回到检查网页界面,随着鼠标在空白地方下滑,在左侧文件下面陆续出现了多个feed?tab"开头的文件,经过分析,他们区别在于"tab ="里的内容,其他部分的内容都一样,这时我们可以把"tab ="里不同的内容存放于列表中,利用遍历取出内容,拼接到url中进行取值,就可以得到多个不同栏目的内容。

代码实现

import requests
import time
import oslis = ['影视', '音乐', 'VLOG', '游戏']
lis1 = ['yingshi_new', 'yunying_vlog', 'yunying_vlog', 'youxi_new', ]
"""lis里的名字用于创建文件夹,lis1里的内容是放到url里进行网页的循环爬取
对两个文件进行zip打包,再用遍历取出两个值,用于不同的地方
如果lis和lis1的内容一样,创建的文件夹名字就是里面英文的内容"""
for i, m in zip(lis, lis1):data_dir = f'./video2/{i}'os.makedirs(data_dir)print(f'{i}文件创建成功')url = f'https://haokan.baidu.com/web/video/feed?tab={m}&act=pcFeed&pd=pc&num=5&shuaxin_id=1630038532427'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62'}res = requests.get(url, headers=headers)  # 对url发起请求,获取相应栏目的内容html = res.json()['data']['response']['videos']  # .json()以字典的形式呈现网页的内容,对获取的网页内容进行字典取值# print(html)name = 1 # 用于对写入的视频进行计数for video in html:  # 遍历取出每一个视频的url# print(video['previewUrlHttp'])# print(video['title'])time.sleep(3)  # 每次爬取暂停3秒response = requests.get(video['previewUrlHttp'])  # 对每个视频的url发起请求title = video['title']  # 取出视频的名字用于保存视频# print(response, title)video_path = '{}/{}.mp4'.format(data_dir, title)  # 传入保存文件的路径和名字with open(video_path, 'wb') as f:  # 以二进制的形式保存视频,音频,照片print(f'正在写入第{name}个视频')f.write(response.content)name += 1

由于视频对网速的要求很高,比较慢,这里就爬取了两个类别的,最后爬取的效果如下:

新发地菜价

需求分析

获取到北京新发地的菜价,这里只爬取前9页,如果需要爬取多页,请在main函数中更改range的值

页面分析

在表格的“大白菜”处点击鼠标右键,查看网页源码中未能找到相关内容,说明数据不在网页源码中,点击右键,检查,在network,左侧名称下面只有一个文件,点击,在Preview(预览)中依次点开按钮可以看到数据都在list下,点开0标签,可以看到大白菜的所有信息。
可以看到我们需要的数据都在list标签里面,我们可以访问Headers(表头)的url去获取数据。

把url复制到网页中,可以看到需要的参数是以嵌套字典的形式展现,只需要用字典的关键字去取值就可以了。

从请求方法中我们可以看到是 post请求,当点击第二页,第三页的时候在下面出现了多个"getPrice"的文件,点开之后发现它们的url都一样,这样的话如何实现翻页处理呢?

再仔细往下看,在表单数据中可以看到变化,第一页的current为1,第二页的为2,第三页的为3,依次类推,实现翻页功能的是current参数,这时就需要把post请求中携带的参数current进行遍历操作。

代码实现

import requests
import csv
import timedef get_url(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62'}res = requests.post(url, data=data, headers=headers)html = res.json()['list']# print(html)return htmldef parse_data(h):lis = []for i in h:# print(i)d = {}d['编号'] = i['id']d['一级分类'] = i['prodCat']d['二级分类'] = i['prodPcat']d['品名'] = i['prodName']d['平均价'] = i['avgPrice']d['最低价'] = i['lowPrice']d['最高价'] = i['highPrice']d['产地'] = i['place']d['单位'] = i['unitInfo']d['规格'] = i['specInfo']d['发布日期'] = time.strftime("%Y/%m/%d", time.strptime(i['pubDate'], "%Y-%m-%d  %H:%M:%S"))  # 对时间的处理,只保留年月日lis.append(d)# print(lis)return lisdef sava_data(lis_data, header):with open('lis_data.csv', 'a', encoding='utf-8', newline="") as f:print(f'正在爬取第{i}页')writ = csv.DictWriter(f, header)if i == 1:  # 处理重复表头writ.writeheader()writ.writerows(lis_data)if __name__ == '__main__':global ifor i in range(1, 10):  # 对data进行遍历,实现翻页操作time.sleep(2)data = {'limit': 20,'current': {i},'pubDateStartTime': '','pubDateEndTime': '','prodPcatid': '','prodCatid': '','prodName': ''}url = 'http://www.xinfadi.com.cn/getPriceData.html'header = ['编号', '一级分类', '二级分类', '品名', '平均价', '最低价', '最高价', '产地', '单位', '规格', '发布日期', ]h = get_url(url)lis_data = parse_data(h)sava_data(lis_data, header)

得到的结果如下图所示

python爬虫(十二)爬取好看视频和新发地菜价相关推荐

  1. Python爬虫进阶之爬取某视频并下载,没有广告的视频看起来不爽吗?

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文章来着腾讯云 作者:python学习教程 意外的挖掘到了一个资源网站(你懂得) ...

  2. Python 爬虫入门(二)——爬取妹子图

    Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...

  3. Python爬虫实例(二)——爬取新冠疫情每日新增人数

    Python是世界上最美的语言 大家好,我是Henry! 疫情以来,相信大家每天都关注着疫情的实时动态,许多网站上也post了疫情的相关资料. 丁香园 百度 各个网站都会统计每日新增,刚学了Matpl ...

  4. Python爬虫实战(二):爬取天涯帖子(只看楼主)

    先上代码 #coding=utf-8 import requests from bs4 import Tag from bs4 import BeautifulSoup def getHtml(url ...

  5. python 爬视频下载_Python爬虫进阶之爬取某视频并下载的实现

    这篇文章我们来讲一下在网站建设中,Python爬虫进阶之爬取某视频并下载的实现.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 这几天在家闲得无聊,意外的挖掘到了一个资源网站 ...

  6. python爬虫:Selenium爬取B站视频标题、播放量、发布时间

    上次尝试了利用Ajax机制爬取B站视频播放量等数据(链接在下方),但是发现响应的JSON数据中没有发布时间的数据,这次决定用Selenium试一下. python爬虫:Ajax爬取B站视频标题.播放量 ...

  7. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) —— 编写一个基本的 Spider 爬取微博用户信息

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(一) -- 新建爬虫项目 在上一篇我们新建了一个 sina_scrapy 的项目,这一节我们开始正式编写爬虫的代码. 选择目标 ...

  8. Python爬虫系列之爬取某社区团微信小程序店铺商品数据

    Python爬虫系列之爬取某社区团微信小程序店铺商品数据 如有问题QQ请> 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流,请勿用于非法用途 数据库仅用于去重使用,数据主要存 ...

  9. python爬虫——Cookie登录爬取豆瓣短评和影评及常见问题

    python爬虫--Cookie登录爬取豆瓣短评和影评 常见问题(本文已解决) 具体步骤 一.获取网页源码 短评.影评 二.解析网页源码及爬取评论 1.短评网页解析 ①确定位置 2.短评爬取 ①名称爬 ...

最新文章

  1. 【django】【基础】templates
  2. 如果对GIF进行模糊化加边扩增
  3. dell服务器清空系统空间,PowerEdge 服务器上的内存配置错误。
  4. 897A. Scarborough Fair# 斯卡布罗集市(模拟)
  5. 下面属于javascript内部对象的有_JavaScript从零开始——面向对象编程(2)
  6. 安装sphinx的php扩展,安装php扩展sphinx
  7. 如何选择适合自己的相机?
  8. python木马程序设计_基于HTTP的Python特洛伊木马程序,用于远程系统取证和特权转移
  9. ssh连接远程服务器
  10. Web CAD SDK 14.1.0 New Crack
  11. [操作系统] FAT文件系统概述
  12. 模仿excel复合饼图 (饼-柱)
  13. eclipse下改变 匹配标签和匹配括号的颜色
  14. 愚见《Nighttime Visibility Enhancement by Increasing the Dynamic Range andSuppression of Light Effects》
  15. 王者荣耀服务器未响应 小米,10月23日小米手机更新王者荣耀失败 小米更新不了新赛季怎么办...
  16. Qt: 读取/写入文本文件内容
  17. 系统培训流程及注意事项,实操总节
  18. 中国集成电路发展探秘
  19. 美创科技与您一同回顾2022年一季度网络与数据安全政策
  20. java eclipse 简单的局域网聊天 webservice

热门文章

  1. rfcn 共享_RFCN 精简讲解
  2. 新手必看: 测试基本流程、测试用例全在这里!
  3. java中的线程安全是什么?什么叫线程安全?什么叫不安全?
  4. 看不见的养车成本——热门车易损件大调查
  5. rstudio安装后如何打开_Rstudio安装及安装问题总结
  6. 推荐足球篮球高清直播源api,解决需要人工24小时匹配直播源问题
  7. js跨域解决方案php,详解js跨域原理以及2种解决方案_javascript技巧
  8. java手机编译器ios_iOS编译器
  9. 凯斯纽荷兰宣布停止在中国市场销售工程机械设备;康泰伦特完成上海外高桥临床供应设施扩建 | 美通企业日报...
  10. Sl beta4发布了