网络爬虫的基本工作流程例如以下:

1.选取种子URL;

2.将这些URL放入待抓取URL队列;

3.从待抓取URL队列中取出待抓取在URL。解析DNS,而且得到主机的ip,并将URL相应的网页下载下来,存储进已下载网页库中。

4.分析已抓取URL队列中的URL,分析当中的其它URL,而且将URL放入待抓取URL队列,从而进入下一个循环。

在抓取标签匹配的时候 ,有三种方法来抓取 分别是   re , xpath ,  BeautifulSoup4

建议大家要精确的学好re正则匹配, 因为有些网站 ,xpath,和 BeautifulSoup4  没有正则匹配效率高。

本人在爬取 优酷网站的时候  就得到了这个理解,正则匹配 会精准的筛选出相应的数据。

如果大家是初学者,可以提供一个不被封ip的一个秘诀:exit(-1)。

次秘诀是爬虫里的断点,可以先设置断点 只爬取一条数据,让网站不认为你是爬虫,等把所有逻辑都成功确认之后,在解开断点,爬到自己想要的数据。

那么就来展示一下爬虫爬视频的代码,代码如下:

# 导包
import requests
import re
from lxml import etree
import os
class PearVideo(object):
# 定义抓取方法
def get_content(self,url,type):
if type == 'index':
fil_name = 'test_pear.html'
else:
fil_name = 'inner_pear.html'
# 使用os模块来判断文件是否存在
if not os.path.exists(fil_name):
# 发送http请求
r = requests.get(url)
# 解码
html = r.content.decode('utf-8')
# 写文件
with open('./'+fil_name,'w',encoding='utf-8') as f:
f.write(html)
else:
with open('./'+fil_name,encoding='utf-8') as f:
contents = f.read()
return contents
# 定义数据匹配方法
def get_xpath(self,html):
# 转换格式
html = etree.HTML(html)
html_data_img = html.xpath("//div[@class='actcontbd']/a/@href")
# print(html_data_img)
# 处理内页网址
url_list = []
for item in html_data_img:
item = 'https://www.pearvideo.com/'+item
url_list.append(item)
# print(url_list)
# 爬取内页
url_page = url_list[8]
inner_html = self.get_content(url_page,'inner')
# 匹配真实视频地址
regex = re.compile('srcUrl="(.+?)"')
print(regex.findall(inner_html))
# 下载视频
r = requests.get(regex.findall(inner_html)[0])
with open("./test_pear.mp4","ab") as f:
f.write(r.content)

if __name__ == "__main__":
# 实例化一个对象
pearvideo = PearVideo()
html = pearvideo.get_content('https://www.pearvideo.com/','index')
# 匹配图片地址
pearvideo.get_xpath(html)
如有需要更进,请需大神指点。

转载于:https://www.cnblogs.com/lyp0626/p/10479502.html

爬虫 知识点 总结。相关推荐

  1. python入门爬虫知识点

    Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 当我们在浏览器中输入一个url后回车,后台会发生什么? 简单来说这段过程发生了以下四个步骤: 网络爬虫要做的,简单来说,就是实现浏览器的功 ...

  2. hadoop 爬虫_python爬虫知识点梳理:带你全面入门python爬虫

    今天主要跟大家谈谈爬虫,尤其是刚入门的伙伴,少走弯路!文末附全套的视频版Python学习教程,含爬虫教程!希望大家能够把文字部分看完!做一个梳理! 在学习爬虫之前我们需要明白的一个问题: 爬虫能做什么 ...

  3. python爬虫知识大全_Python爬虫知识点一

    一.入门知识: 1.1.HTTP简介 HTTP = HyperText Transfer Protocol URI = Uniform Resource Identifier URL = Unifor ...

  4. python爬虫基础知识点_入门Python爬虫知识点梳理

    [小宅按]爬虫基本原理就是通过网络请求从远程服务器下载数据的过程,而这个网络请求背后的技术就是基于 HTTP 协议.作为入门爬虫来说,用户需要了解 HTTP协议的基本原理,虽然 HTTP 规范用一本书 ...

  5. python爬虫知识大全_(硬知识)Python爬虫知识点梳理,认真看好好学

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:企鹅号小编 ( 想要学习Python?Python学习 ...

  6. Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续一)

    通过前一节得出地址可能的构建规律,如下: https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksT ...

  7. python爬虫高级知识点_Python爬虫知识点梳理总结,殿堂级小白入门必读

    数据分析是任何技术一样.你应该学习的目标.目标就像灯塔,指引你前进.我见过很多合作伙伴学习学习,然后学会放弃.事实上,很大一部分原因是没有明确的目标,所以你必须清楚学习的目的.你准备学习爬行之前,问问 ...

  8. 从0到1:Python爬虫知识点梳理

    做数据分析和任何一门技术一样,都应该带着目标去学习,目标就像一座灯塔,指引你前进,很多人学着学着就学放弃了,很大部分原因是没有明确目标,所以,一定要明确学习目的,在你准备学爬虫前,先问问自己为什么要学 ...

  9. python爬虫url参数有随机数、如何确定是正确的链接_Python爬虫知识点——请求

    Accept:请求报头域,用于指定客户端可接受哪些类型的信息. Accept-Language:指定客户端可接受的语言类型. Accept-Encoding:指定客户端可接受的内容编码. Host:用 ...

  10. python scrapy框架详解_Python爬虫知识点四--scrapy框架

    一.scrapy结构数据 解释: 1.名词解析: o 引擎(Scrapy Engine) o 调度器(Scheduler) o 下载器(Downloader) o 蜘蛛(Spiders) o ...

最新文章

  1. 秒懂Mycat和MySQL的区别【转自百度知道】
  2. 删除有序数组中的重复项(数组去重)
  3. python不退出运行页面_如何在不完全退出Tkinter窗口的情况下停止正在运行的函数?...
  4. TP的URL设计和SEO支持
  5. 通过SQL Server 2008 访问Oracle 10g
  6. LeetCode 39. 组合总和(排列组合 回溯)
  7. 怎样找回由于IO设备错误移动硬盘的文件
  8. 又跌了!2020年6月程序员工资统计
  9. java实体类的功能_(转载) java实体类的作用
  10. 从零开始刷Leetcode——数组(11.15.16.18)
  11. vba里使用python自定义函数(xlwings)
  12. Matlab读取excel文件绘制折线图
  13. 数据结构与算法——红黑树(Red Black Tree)
  14. 2021算法竞赛入门班第一节课枚举贪心习题
  15. LabVIEW编程LabVIEW开发 旧程序升级维护
  16. 【Maven】项目打包-war包-Jar包[IDEA将项目打成war包]
  17. 企业网站seo优化有什么禁忌?
  18. 致远SPM解决方案之库存管理
  19. unity游戏场景设计
  20. HTTP请求的响应头部Vary的理解

热门文章

  1. 华为架构师_华为首席架构师刘敏:5G商业落地 中小企业如何分一杯羹?
  2. centos7,关闭mysql。出现mysql启动不了的情况
  3. 项目中用到的一些特殊字符和图标
  4. DateTimePicker 控件置空
  5. 【转】计算机键盘功能键作用
  6. [转]一个计算机专业学生几年的编程经验汇总
  7. windows2008不能显示图片缩略图设置
  8. HDU-1301-Jungle Roads
  9. OI树上问题 简单学习笔记
  10. 使用axios 报 name.toUpperCase is not a function