首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

找不到requests库。

下载速度太慢。

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

解决办法:

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

使用多线程。

自己写注释

效果:

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

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

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

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

代码

我给代码写了详细的注释,所以这里就不详细的讲解了。也可以到我的网站去下载http://wulehao.com/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('2、可能有一些图片因为链接失效下载不了,不是本程序的问题。')

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

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

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

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

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

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

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) #等待两分钟

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180202B15J2U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券