【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 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)continuefile.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')

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

错误之Only one usage of each socket address (protocol/network address/port)解决办法

错误如下&#xff1a; 解决方案&#xff1a;这个错误是端口占用导致。我们应找到此应用程序对应端口号的pid然后kill掉&#xff0c;即可ok

【测试】用例设计思路-六方面

有这样一个面试题&#xff1a;在一个Web测试页面上&#xff0c;有一个输入框&#xff0c;一个计数器&#xff08;count&#xff09;按钮&#xff0c;用于计算一个文本字符串中字母a出现的个数。 请设计一系列测试用例用以测试这个Web页面。 有经验的测试人员可能会问面试官&…

Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'

code: 1 #encodingutf-82 from django.db import models3 # Create your models here.4 class BookInfo(models.Model): #创建书本信息类&#xff0c;继承models.Model5 booktitlemodels.CharField(max_length20)6 bookdatamodels.DateField()7 class HeroInfo(model…

【职场】高薪的条件你满足几条?

生活中时常听到人们抱怨工资少&#xff0c;但是抱怨归抱怨&#xff0c;你是否意识到自身的一些问题呢&#xff1f;高薪的条件你又满足几条一、忠诚 单位可能开除有能力的员工&#xff0c;但对一个忠心耿耿的人&#xff0c;不会有领导愿意让他走&#xff0c;他会成为单位这个铁打…

【Excel】函数DateDif查看两个日期之间的间隔

Excel中的DateDif函数是一个隐藏函数&#xff0c;在excel的公式以及帮助中是找不到的&#xff0c;必须要手工输入才可以。 此函数的格式为datedif&#xff08;"开始日期"&#xff0c;"结束日期"&#xff0c;"参数"&#xff09;&#xff0c;说明如…

跟老齐学python Django实战第一章错误解决

我使用的是 Django 2.0 版本&#xff0c;在按第一章所说的做&#xff0c;出现了三个大问题&#xff0c;并找了答案&#xff0c;现在贴上来&#xff0c;希望能给大家小小帮助&#xff1a; 1&#xff09; 写 models.py 的时候&#xff0c;执行“python manage.py makemigrations …

【技巧】搜狗输入法特殊技巧

有时候我们报销或者其他情况下需要对金额进行大写&#xff0c;这时我们可以通过搜狗输入法进行转换;阅读的时候&#xff0c;我们会遇到一些特殊而且复杂的字&#xff0c;这个时候我们也可以通过搜狗输入法知道这个字怎么读。 先下载搜狗拼音输入法&#xff1a; 数字金额进行转换…

【商业】梳理你的商业模式

商业模式一直是一个好像每个人都能说两句&#xff0c;但是总也说不清楚的话题。 商业模式是企业的立身之本&#xff0c;也是企业的本质和核心。商业模式是人们商业智慧的集中体现&#xff0c;也是商业中最令人兴奋的部分。在商业模式的背后&#xff0c;有着太多的成功与失败、欢…

Django View和URL

网页程序的逻辑&#xff1a;request进来 -> 从服务器获取数据 -> 处理数据 -> 把网页呈现出来 url 设置相当于客户端向服务器发出request请求的入口&#xff0c;并用来指明要调用的程序逻辑 views 用来处理程序逻辑&#xff0c;然后呈现到template&#xff08;一般为…

Django配置bootstrap

1、下载bootstrap文件。https://getbootstrap.com/docs/3.3/getting-started/ 下载的文件夹可以看出有css、fonts、js三个文件&#xff0c;这就是Bootstrap 3的全部 2、 自定义静态文件&#xff08;css&#xff0c;js&#xff0c;image&#xff09;位置 根目录下新建 static…

同步与异步以及线程与进程

写过爬虫的都知道&#xff0c;爬虫的性能瓶颈在于IO&#xff0c;因为爬虫是一个IO密集型业务&#xff0c;程序需要发起网络请求&#xff0c;必然就有IO阻塞&#xff0c; 通常请求一个URL耗时要几百毫秒到几秒不等&#xff0c;而我们的CPU处理速度惊人&#xff0c;两者的速度就好…

Django 新建account应用

一、应用基本配置 1、在根目录下新建account应用。python manage.py startapp account 2、在项目根目录的项目目录的setting下的INSTALLED_APPS中添加 ‘account’ 3、在项目根目录的项目目录的url.py中进行URL配置。添加 url(r^account/,include(account.urls,namespaceac…

【Python爬虫】Windows环境下wxpy不需每次登陆重新扫描

有时候我们想每天向你女朋友或者某人发送一条信息&#xff08;通过线程控制或者每天自动任务&#xff09;;此外我们可以通过更改wxpy中Bot()中参数&#xff0c;保存缓存不用每次都扫描二维码。 以下代码来源于&#xff1a;http://www.cnblogs.com/botoo/p/8622379.html from …

pycharm中windows找不到chrome解决办法

这种问题主要是因为在pycharm中关于chrome的安装路径配置不正确造成的&#xff0c;具体的解决办法为&#xff1a; 打开pycharm–》File–》setting–》Tools–》Web Browsers 然后添加chrome安装路径&#xff0c;然后就成功啦~ 转载自&#xff1a;https://blog.csdn.net/csz…

Win10系统设置任务计划执行python脚本

上一篇文章说了通过Python中的wxpy在微信每天发送一条消息到女朋友或者某个人&#xff0c;通过线程方式每天发送次消息。 这里主要说如何通过window10自带的“任务计划程序”&#xff0c;每天在指定时间发送一条消息。 1. 首先通过windows 10系统左下角输入框输入“任务计划程…

bootstrap里col-xs , col-sm ,col-md,col-lg的区别

前言 对于一些初学boostrap的同学来说&#xff0c;肯定也像我一样傻傻的搞不懂col--*都是要怎么使用吧&#xff0c;我刚开始也表示一脸懵逼&#xff0c;后来查阅了这篇文章才搞懂了他们之间的区别&#xff0c;我整理了一下供大家一起学习。 摘要: bootstrap栅栏系统css中的col…

【Word 】隐藏功能生成特殊线

有时候在用word进行文字处理时&#xff0c;有一些方法可以快速生成特殊的线&#xff0c;以下是具体的一些方法&#xff1a; 1.输入3个“”&#xff0c;再按回车键Enter&#xff0c;生成一条双直线 2.输入3个“~~~”&#xff0c;再按回车键Enter&#xff0c;生成一条波浪线 3.输…

Django - - - -视图层之视图函数(views)

阅读目录(Content) 视图层之视图函数(views) 一个简单的视图1.HttpRequest2.HttpResponse 1.render 函数 2.redirect 函数对比render与redirect&#xff1a; 回到顶部(go to top) 视图层之视图函数(views) 一个视图函数&#xff0c;简称视图&#xff0c;是一个简单的Python …

【Excel】设计简单抽奖小程序

其实我们可以通过excel做一个抽奖的小程序。比如搞活动送奖品&#xff0c;我们就可以通过这个小程序抽中奖名单 中奖名单下面输入“INDIRECT("A"&RANDBETWEEN(4,12))”&#xff0c;然后按F9进行抽奖 其中用到了两个函数INDIRECT(单元格引用&#xff0c;[引用样式…

python manage.py syncdb Unknown command: 'syncdb'问题解决方法

在django1.9后的版本中&#xff0c;python manage.py syncdb命令修改为python manage.py migrate&#xff0c;执行正常。 转载自https://blog.csdn.net/u010309756/article/details/53486924