本文共 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')