更多课程 选择中心


Python培训

400-996-5531

Python多线程爬虫,分分钟下载百度图片

  • 发布:邬乐昊
  • 来源: 2406工作室
  • 时间:2018-02-03 16:58

最近我在学习Python,因为以前学习过C++,所以Python学起来还是挺快的,不知不觉中就学到了爬虫,我在敲了一遍爬虫的代码后,发现了几个问题:

找不到requests库。

下载速度太慢。

没有详细的讲解,第一遍很难读懂。

解决办法:

通过命令提示符安装Python库。

使用多线程。

自己写注释

效果:

下面我就给大家详细的讲解一下windows安装Python库文件解决办法。

按下快捷键:“win键”+字母“r”,并输入“cmd”,打开“命令提示符”。

输入“pip install 库文件名称”。

如果下载过程中有提问,就输入“y“并回车。

代码

我给代码写了详细的注释,所以这里就不详细的讲解了。也可以到我的网站去下载#/download/%E5%A4%9A%E7%BA%BF%E7%A8%8BPython%E7%88%AC%E8%99%AB.py

#-*- coding:utf-8 -*-

import re

import requests

import os

import _thread

import time

print('注明:')

print('1、本程序只供公众号读者们学习使用,请勿用于其他用途。')

print('2、可能有一些图片因为链接失效下载不了,不是本程序的问题。')

print('3、本程序使用了多线程,输出可能有一点乱。')

print('4、本程序会自动在D盘创建一个目录,名称为下载内容,图片会放在里面。')

key_word = input("请输入下载内容:")

num = input('请输入下载页数:')

i = 0  #图片名称(编号0~n)

st = 'D:\\'+key_word #存放图片的文件夹(如果没有D盘可以改为C盘)。

if os.path.isdir(st) == False:

os.mkdir(st) #如果没有这个文件夹就创建一个

def getpic(each,ii):

#print(each)  打印地址(因为是多线程的程序,打印出来会很乱,所以去掉了。)。

try:

pic= requests.get(each)  #尝试回获取图片

except requests.exceptions.ConnectionError:

pri='图片错误!图片'+str(ii)+'无法下载'

print(pri) #链接失效,报错并退出函数。

return

string =st+'\\'+str(ii) + '.jpg' #将文件夹路径和文件名合并,得到图片路径。

fp = open(string,'wb') #打开文件,没有文件就新建一个。

fp.write(pic.content) #将下载完的图片写入到文件中。

fp.close() #关闭文件

pri=str(ii)+'、'

print(pri) #向使用者汇报

print('下载完成的图片有:') #for循环之前打印标题,等待图片下载完成。

for i in range(int(num)):

pn = i*20 #百度图片的页数值为页数*20

url = 'https://tupian.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+str(key_word)+'&pn='+str(pn)+'&gsm=3c&ct=&ic=0&lm=-1&width=0&height=0' #拼接链接

html = requests.get(str(url)).text #获取地址

pic_url = re.findall('"objURL":"(.*?)",',html,re.S) #用正则表达式获取图片链接列表。

for each in pic_url:

_thread.start_new_thread(getpic,(each,i)) #创建新进程下载图片,each为图片链接,i为图片编号。

i += 1 #图片编号加“1”

time.sleep(120000) #等待两分钟

文章来自网络,版权归原作者所有,如果侵犯你的权利,请联系我们进行删除!

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:解读『2017年度Python榜单』
下一篇:3本零基础学习Python的书籍推荐

2021年Python全套免费视频教程在哪里?

Python编程学习路线

Python最高有几级?

人工智能与语音遥控的区别?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省