1.在进程池中的map函数中,其属于异步,并且自带close和join函数
解释下面一个程序:
from multiprocessing import Pool import time def func(n): time.sleep(1) return n*n if __name__=='__main__': p=Pool() for i in range(10): ret=p.apply_async(func,args=(i,)) print(ret.get())#gei会让这一步进入堵塞状态当func执行完成后才去拿结果
2回调函数的使用情况:有时候我们一次性处理多个网站,在进程数据爬虫时,我们把从网站上读取和下载过程的程序放入子进程进行,这个时候主进程一直处于
等待状态(休闲状态)cpu利用率降低,这个时候就可以使用回调函数把子进程中获取到的值供主进程就去处理。
3.怎么安装requests模块:
首先打开cmd,进行磁盘切换就是再命令行输入磁盘号加上:,进入装有python的磁盘目录下,然后找到pythonpip的安装文件路径,(一般都在Scripts下)如果忘记安装位置可以右击软件,属性然后打开文件位置,找到文件的安装目录,然后在进入cmd命令框,输入cd C:\python\Scripts,再使用dir进行查看是否有如下命令
然后在使用pip install requests命令进行安装模块,如果出现报错,则需要对pip进行更新,需要输入python -m pip install --upgrade pip,之后会进入自动更新状态,更新完成以后,在输入
pip install requests 就可以安装成功了
4.怎么再使用的p'y'charm 中跟换python的版本:
打开file中setting——然后找到project——再找到project intrepretation
5.使用requests写程序:
import requests respone=requests.get('http://www.baidu.com') print(respone) print(respone.status_code)#打印网页的状态码 print(respone.content) 结果位 <Response [200]> 200 b'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>\xe6\x96\xb0\xe9\x97\xbb</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>\xe5\x9c\xb0\xe5\x9b\xbe</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>\xe8\xa7\x86\xe9\xa2\x91</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>\xe8\xb4\xb4\xe5\x90\xa7</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>\xe7\x99\xbb\xe5\xbd\x95</a> </noscript> <script>document.write(\'<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=\'+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ \'" name="tj_login" class="lb">\xe7\x99\xbb\xe5\xbd\x95</a>\');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">\xe6\x9b\xb4\xe5\xa4\x9a\xe4\xba\xa7\xe5\x93\x81</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>\xe5\x85\xb3\xe4\xba\x8e\xe7\x99\xbe\xe5\xba\xa6</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>©2017 Baidu <a href=http://www.baidu.com/duty/>\xe4\xbd\xbf\xe7\x94\xa8\xe7\x99\xbe\xe5\xba\xa6\xe5\x89\x8d\xe5\xbf\x85\xe8\xaf\xbb</a> <a href=http://jianyi.baidu.com/ class=cp-feedback>\xe6\x84\x8f\xe8\xa7\x81\xe5\x8f\x8d\xe9\xa6\x88</a> \xe4\xba\xacICP\xe8\xaf\x81030173\xe5\x8f\xb7 <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>\r\n'
从结果来看,此网页的状态是200,并且网页状态为200时属于正常,若状态值为404或者502、504时,说明网页故障,登陆不上去。
import requests from multiprocessing import Pool def get(url): respone=requests.get(url) if respone.status_code==200: return url,respone.status_code def print_url(m): print('%s\t%s'%(m[0],m[1])) if __name__=='__main__': p=Pool() url_list=[ 'https://www.baidu.com', 'https://www.sohu.com/' 'https://www.sogou.com/' 'https://pinyin.sogou.com/' ] for url in url_list: p.apply_async(get,args=(url,),callback=print_url) p.close() p.join() 结果为 https://www.baidu.com 200 https://www.sohu.com/https://www.sogou.com/https://pinyin.sogou.com/ 200
6.爬虫以前程序回顾: