Python斗图网多线程爬取图片

coding:utf-8

import requests
import threading #多线程
from lxml import etree #解析网页
from bs4 import BeautifulSoup #页面提取

#输出的内容编码是utf-8

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

def index_url(url):
#加上header是为了防止网站反爬虫的机制 我们使用代理模拟浏览器
#页面的header User-Agent是代理 当前页面的 注:所有User-Agent都是一样的
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'}
html=requests.get(url,header).content
return html

#获取每个图片链接

def get_img(html):
soup = etree.HTML(html)
items=soup.xpath('//div[@class="artile_des"]')
for item in items:
imgurl_list=item.xpath('table/tbody/tr/td/a/img/@onerror')
#print imgurl_list
start_save_img(imgurl_list)
#sys.exit()

#获取详情页a标签链接

def get_img_html(html):
#创建BeautifulSoup对象
soup = BeautifulSoup(html,'lxml')
#查找a标签 class是关键字使用要加上下划线class_
a_all=soup.find_all('a',class_="list-group-item")
for i in a_all:
img_html=index_url(i['href'])
get_img(img_html)

#下载图片

def save_img(img_url):
img_url = img_url.split('=')[-1].replace(''','')
img_url = 'http:'+img_url
# print 123
# sys.exit()
# print img_url
# sys.exit()
img_content = requests.get(img_url).content
#print img_content.status_code
save_path='./doutu/'+img_url.split('/')[-1]
# print save_path
# sys.exit()
with open(save_path, 'wb') as f:
print u'正在下载'+img_url.split('/')[-1]
f.write(img_content)

#多线程 调用下载图片方法

def start_save_img(imgurl_list):
for i in imgurl_list:
th=threading.Thread(target = save_img,args=(i,))
th.start()
def main():
for i in range(1,2):
url = 'https://www.doutula.com/article/list/?page='+str(i)
starthtml = index_url(url)
get_img_html(starthtml)

if name == 'main':
main()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值