• 爬虫 知识点 总结。


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

    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)
     
    如有需要更进,请需大神指点。

     

  • 相关阅读:
    记录docker 安装sonarqube和安装的一些坑
    Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat)
    使用docker创建rabbitmq服务
    Centos7下安装Docker
    使用 docker 搭建 MySQL 主从同步/读写分离
    sql优化建议
    记使用docker配置kafka
    6种@Transactional注解的失效场景
    linux定时任务之清理tomcat catalina.out日志
    持久层框架JPA与Mybatis该如何选型
  • 原文地址:https://www.cnblogs.com/lyp0626/p/10479502.html
Copyright © 2020-2023  润新知