【Python爬虫】爬虫程序的简单处理过程

一月份的时候有写过一篇文章,是关于如何解析网站,然后将图片下载下来,爬虫爬取美女图片存入到动态的文件夹中
今天主要总结的是爬虫的一个基本思路,主要有:
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 os
import requests
import urllib.request
from urllib.parse import urlencode
from bs4 import BeautifulSoup
from tqdm import tqdm

def 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.text

def 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')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值