|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
以前写爬虫都是单线程单进程来爬,现在看到网络上要多线程多进程,想想也是哈,对于大量数据还是得快点才行,那么问题来了,有人说在某些情况下还不如单线程爬的快,那哪个时候用多线程哪个时候用多进程?比如爬取风景图http://pic.netbian.com/4kfengjing/以这个网址为例,如何能更快又不被服务器那边察觉到爬虫。- import requests,re,os,time
- from bs4 import BeautifulSoup
- from fake_useragent import UserAgent
- def openurl(url):
- ua=UserAgent()
- head={'User-Agent':ua.random}
- res=requests.get(url,headers=head)
- res.encoding=res.apparent_encoding
- html=res.text
- return html
- def main():
- ua=UserAgent()
- for i in range(2,176):
- url='http://pic.netbian.com/4kfengjing/index_%d.html'%i
- html=openurl(url)
- soup=BeautifulSoup(html,'lxml')
- ul=soup.find('ul',class_="clearfix")
- img = ul.findAll('img')
- for each in img:
- newurl='http://pic.netbian.com'+each.attrs['src']
- filename=newurl.split('/')[-1]
- with open(filename,'wb') as f:
- f.write(requests.get(newurl,headers={"User-Agent":ua.random}).content)
- time.sleep(1)
- if __name__=='__main__':
- os.mkdir('../小爬爬成果/4k风景图')
- os.chdir('../小爬爬成果/4k风景图')
- main()
复制代码 这是我的代码,把所有的风景图都爬下来了,虽然中间没有报403之类的错误,但速度确实不敢恭维。希望大佬们能讲讲该在哪个时候使用多线程或多进程,另外可以以这个实例补充一下代码。让爬取速度增加,不考虑电脑配置的影响。
用scrapy,有一个注意的点是一定要写好网址规则。
由于scrapy是异步的,如果直接进行全站爬取,会导致图片分类错误。
最要一个一个来,例如先爬风景,然后到动漫。这样子
|
|