爬虫 知识点 总结。

857次阅读
没有评论
爬虫

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

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

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-24发表,共计1747字。
新手QQ群:570568346,欢迎进群讨论 Python51学习