Python【Crawler】2-聚焦爬虫_python crawler.read_-程序员宅基地

技术标签: 爬虫  Python-note  python  学习笔记  

聚焦爬虫:爬取页面中指定的页面内容

  • 编码流程

    1. 指定url
    2. 发起请求
    3. 获取响应数据
    4. 数据解析
    5. 持久化存储
  • 数据解析分类

    1. 正则表达式
    2. bs4
    3. xpath (*)

数据解析原理
- 解析的局部文本内容都会在标签之间或标签的属性中存储
- 1. 进行标签的定位
- 2. 标签或者标签对应的属性中存储的数据值进行提取(即解析~~~~)

正则表达式爬取

import os
import requests
import re

# UA伪装
UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.44'
header = {
   
    'User-Agent': UA}

# 存储目录
folder = './qiushi'
if not os.path.exists(folder):
    os.mkdir(folder)


def main():
    # 分页处理
    for i in range(1, 3):
        url = f"https://www.qiushibaike.com/imgrank/page/{i}/"
        # 1. 爬取整张页面
        page_text = requests.get(url=url, headers=header).text
        # 2. 使用聚焦爬虫进行数据解析
        images = data_parse(page_text)

        length = len(images)  # 进度条所需

        for index, image in enumerate(images):
            # 3. 发起请求并获得数据
            image_content = requests.get(url=image, headers=header).content
            # 4. 持久化存储
            image_name = image.split('/')[-1]
            image_path = os.path.join(folder, image_name)
            with open(image_path, 'wb') as f:
                f.write(image_content)
                # 进度打印
                print(image_name + ' 下载成功!')
                print(f'{index} / {length}', end='\r')

        print(str(i) + "/ 2 page")


def data_parse(page_text):
    """ 解析出每张图片的url """

    # 分析网页后整理出正则表达式
    ex = r'<div class="thumb">.*?<img src="(.*?)" alt.*?></div>'
    images = re.findall(ex, page_text, re.S)
    images = ['https:' + x for x in images]  # 解析出来没有协议头,给增加上

    return images


if __name__ == "__main__":
    main()

--------------------------------------------------

# Output:

K7EUFEUIV3QY37P1.jpg 下载成功!
DFIAAL32X5J35JP2.jpg 下载成功!
...
NXUA4X1CMQP22UPP.jpg 下载成功!
FQILIKXCVMUIRXL8.jpg 下载成功!
1/ 2 page
95GRCYEUZANQ361J.jpg 下载成功!
2SXBFKSSK3JD3G2M.jpg 下载成功!
...
5YTNS4JH0PLZAO58.jpg 下载成功!
59CN77YAL198SM6M.jpg 下载成功!
2/ 2 page

示例网页

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试bs4</title>
</head>
<body>
    <div>
        <p>百里守约</p>
    </div>
    <div class="song">
        <p>李清照</p>
        <p>王安石</p>
        <p>苏轼</p>
        <p>柳宗元</p>
        <a href="https://www.song.com" title="赵匡胤" target="_self">
            <span>this is span</span>
            宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱
        </a>
        <a href="" class="du">总为浮云能避日,长安不见使人愁</a>
        <img src="https://www.baidu.com/meinv.jpg" alt="">
    </div>
    <div class="tang">
        <ul>
            <li><a href="https://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂。借问酒家何处有,牧童遥指杏花村。</a></li>
            <li><a href="https://www.163.com" title="qin">秦时明月汉时光,万里长征人未还。但使龙城飞将在,不教胡马度阴山。</a></li>
            <li><a href="https://www.126.com" alt="qi">岐王宅里寻常见,崔久堂前几度闻。正是江南好风景,落花时节又逢君。</a></li>
            <li><a href="https://www.sina.com" class="du">杜甫</a></li>
            <li><a href="https://www.dudu.com" class="du">杜牧</a></li>
            <li><b>杜小月</b></li>
            <li><i>度蜜月</i></li>
            <li><a href="https://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流。吴宫花草埋幽径,晋代衣冠成古丘。</a></li>
        </ul>
    </div></
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mr_pro/article/details/108200821

智能推荐

90岁了,褚时健罕见反思:活着是为了什么?-程序员宅基地

文章浏览阅读378次。他,传统企业的爆品王,造酒、制糖、产烟,种橙子,干什么都是最好的。他,影响企业家的企业家,他的故事和创业精神,深深影响了中国企业界包括柳传志、王石等一些大佬,以及无数要为明天而奋斗的年轻人。他,就是褚时健。褚时健,这个曾被报告文学形容为像太阳一样灿烂的男人,淡然外表下的内心,似乎没有一个人能触碰到。观其容,听其语,你也许读不出跌宕起伏的人生,看不到在老人温暖笑容中刻下的沧桑,但一定不会忽略那亲自铸_90岁了,褚时健罕见反思

算法特训营第12周刷题题目-程序员宅基地

文章浏览阅读114次。算法特训营本周内容:1. 录播视频:树状数组,二维树状数组。2. 直播刷题题目:POJ2352、POJ3067、POJ3321、POJ1195。友情提示:以下是直播刷题链接(收费),不需要看直播请忽略。【直播地址】https://www.epubit.com/courseDetails?id=PCCbf16b01a6788&recommenderCode=1540556欢迎大家一起刷题。...

NBT:5万个基因组和1.2万个新种的地球微生物基因组集-程序员宅基地

文章浏览阅读3.6k次,点赞4次,收藏14次。地球微生物组的基因组集A genomic catalog of Earth’s microbiomesNature Biotechnology [IF:36.558]2020-11-09..._ani 新属

algorithm第三周作业 Collinear Points_algorithm i collinear points-程序员宅基地

文章浏览阅读889次,点赞2次,收藏2次。cousera 上algorithm part I第三周课程讲述的是排序,包括插入排序、选择排序、希尔排序、归并排序和快速排序。其配套作业为Collinear Points,题目大意为给定若干点,求出其中的有四个及以上点共线的线段。要求提交三个文件,Point.java,BruteCollinearPoints.java,FastCollinearPoints.java。Point类给定的的..._algorithm i collinear points

window.location.hash使用总结_$(window).bind('hashchange',-程序员宅基地

文章浏览阅读7.7k次。如果a的name和页面中某个元素的id同名的话,在Safari、Chrome浏览器中会跳到id元素的位置,在IE中则会跳到a元素的位置可以使用jQuery的haschange事件来侦听浏览器点击后退时的hash变化的事件.$(window).bind('hashchange', function () { //});不过以上方案在IE浏览器只能支持到IE8_$(window).bind('hashchange',

[C#]替换字符串中的斜杠和反斜杠_c# 替换斜杠-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏2次。含有斜杠的字符串 中的 斜杠 替换为 反斜杠... string a = "X:\Data Backup\UnityProjects\TestAssetBundle\Assets";//Application.dataPath a = a.Replace("\\", "/");...显示结果X:/Data Backup/UnityProjects/TestAssetBundle/Assets..._c# 替换斜杠

随便推点

Python中如何使用matplotlib给柱状图添加数据标签(bar_label())_matplotlib柱状图添加标签-程序员宅基地

文章浏览阅读2.4w次,点赞15次,收藏91次。Python中如何使用matplotlib给柱状图添加数据标签(bar_label())    本文主要记录如何用使用matplotlib给柱状图添加数据标签,是以matplotlib.pyplot.bar_label()为例。目录Python中如何使用matplotlib给柱状图添加数据标签(bar_label())0.更新matplotlib库1.导入库2.数据准备3.绘制柱状图4.绘图结果5.完整代码6.bar_label()相关参数的补充说明7.参考文献0.更新matplotlib库    _matplotlib柱状图添加标签

java持续集成soapui_集成testNG到JavaAPI测试-执行多条用例-程序员宅基地

文章浏览阅读102次。*****************************************************************在这门课里你将学到Web Services(SOAP WebService和REST API)的手动测试及自动化测试,熟练使用Groovy脚本自动化测试WebService。这门课程设计的是从零基础入门开始学,然后以循序渐进的方式提升到高级水平,不需要在学习课程之前有任..._testng 可以提供soap

Serverless 框架之Kubeless 实战-(一)安装-程序员宅基地

文章浏览阅读1.4k次。1. 创建命名空间,创建kubeless 控制管理容器>kubectl create ns kubeless#自行安装方便切换空间的kubens>kubens kubeless#根据官方提供的yaml ,创建Kubeless Controller Manager容器:>kubectl create -f https://github.com/kubeless/kubeless/releases/download/v1.0.7/kubeless-non-rbac-v1.0..._kubeless

linux eclipse设置颜色,Linux Eclipse美化:解决工具栏过大和 Javadoc背景色修改-程序员宅基地

文章浏览阅读154次。Eclipse 在Ubuntu 下总是感觉上面的工具栏感觉特别的大,控件之间的空隙非常的大,和在Windows 下的感觉非常的不一样(毕竟是刚刚从windows叛逃出来),其实也不光光是Eclipse 是这样,其他也软件也同样有这个问题。尝试过通过更换主题来解决这样的问题,老是看着一个主题,审美总是会疲劳的。在网上找来一圈,解决方案:修改或者新建(系统默认是没有的)/home/Your_usern..._eclipse toolbar颜色

python基本图形绘制第二周答案_考试 嵩天老师 :测验2: Python语法程序与设计(第2周)...-程序员宅基地

文章浏览阅读1.1k次。测验2: Python基本图形绘制 (第2周)单项选择题1、哪个选项不能正确引用turtle库进而使用setup()函数?A、import turtle as tB、import setup from turtleC、from turtle import*D、import turtle正确答案 Bimport只有三种使用方法,以turtle库为例:import turtlefrom turtle ..._00390037003900301688536597255哪个选项不能正确引用turtle库进而使用setup()函数

[蓝桥杯2018初赛]乘积尾零(思路)_乘积尾零思想-程序员宅基地

文章浏览阅读343次。说实话,刚开始想简单了,只考虑了每个数的最后一位,但是没想到还能因式分解,每个数的因子里的2的个数和5的个数需要统计一下,因为2*5==0#include<stdio.h>#include<queue>#include<math.h>#include<map>#include<iostream>#include<string>#include<algorithm>#include<sstream>._乘积尾零思想