博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python爬虫】爬虫程序的简单处理过程
阅读量:4100 次
发布时间:2019-05-25

本文共 2907 字,大约阅读时间需要 9 分钟。

一月份的时候有写过一篇文章,是关于如何解析网站,然后将图片下载下来,

今天主要总结的是爬虫的一个基本思路,主要有:
1.获取一个网页get_one_page()

我们知道一个网页可能由多个参数构成,我们可以传参进去。

2.分析一个网页,获取有用的信息parse_one_page()或者获取图片下载save_one_image()

我们可以通过正则表达式或者第三方插件BeautifulSoup(或者其他插件)解析html文件,然后获取自己有用的信息

3.将获取的信息存储起来

当我们获取到了我们需要的信息后,我们可以存储到Excle,TXT,CSV,或者数据库中

4.main()函数处理流程

我们可以通过一个主流程函数传入参数进行逻辑处理,然后传参数到get_one_page(),parse_one_page(),最后存储起来。
 

下面我们通过一个列子解释一下:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''#作者:cacho_37967865#博客:https://blog.csdn.net/sinat_37967865#文件:getBeauty.py#日期:2018-05-13#备注:get_one_page()函数传参控制url并转化为可解析内容;save_one_image()函数获取图片路径并下载文件;main()函数进行传参循环下载图片    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''# F:\python_env\PaChong_env# -*- coding: utf-8 -*-import osimport requestsimport urllib.requestfrom urllib.parse import urlencodefrom bs4 import BeautifulSoupfrom tqdm import tqdmdef get_one_page(beauty,page):    paras = {        'id' : beauty,        #某个美女的id        'mm' : page           #每个美女有多张图片,每张对应一页    }    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'    }    url = 'http://www.xingmeng365.com/articles.asp?' + urlencode(paras)    # 获取网页内容,返回html数据    response = requests.get(url, headers=headers)    response.encoding = 'gb2312'    print("当前爬取的网址为:" + url)    return response.textdef save_one_image(html,path,id,mm):    soup = BeautifulSoup(html,'lxml')    for link in soup.find_all('img'):        if "/upload/image" in link.get('src'):            image_url = link.get('src')            if id <= 6:                image_url = "http://www.xingmeng365.com/" + image_url[6:]            else:                image_url = "http://www.xingmeng365.com/" + image_url[1:]  # id=7以后,[6:]改为[1:]            fileName = soup.find('h1').get_text()            os.chdir(path)            image_path = str(id) + '-' + str(fileName)            if not os.path.exists(image_path):                print("开始创建文件夹:" + str(fileName))                os.makedirs(image_path)            os.chdir(image_path)            print("开始下载第" + str(mm) + "张图片:" + image_url)            # 可以自定义命名图片名称,好检索            file = open(str(id) + '-' + str(mm) + '.jpg', "wb")            req = urllib.request.Request(url=image_url)            try:                image = urllib.request.urlopen(req, timeout=20)                pic = image.read()            except Exception as e:                print("第" + str(mm) + "张图片访问超时,下载失败:" + image_url)                continue            file.write(pic)            print("第" + str(mm) + "张图片下载成功")            file.close()def main(start_id,end_id,page,path):    for id in tqdm(range(start_id,end_id)):        for mm in range(1,page):            html = get_one_page(id,mm)            save_one_image(html,path,id,mm)if __name__ == '__main__':   main(124, 760, 60, 'F:\Lingwei\AllPhoto')

 

你可能感兴趣的文章
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>
《达芬奇的人生密码》观后感
查看>>
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day12 集合
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
Day_15JavaSE 异常
查看>>
异常 Java学习Day_15
查看>>
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>