鱼C论坛

 找回密码
 立即注册
查看: 2374|回复: 15

[作品展示] [分享]爬取漫画,多线程的爬虫

[复制链接]
发表于 2020-4-14 09:03:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 六小鸭 于 2020-4-14 09:11 编辑

我不是原创,然后我也找不到原来的链接了
直接上代码
  1. import requests
  2. from urllib import parse
  3. from bs4 import BeautifulSoup
  4. import threading
  5. import os
  6. import sys

  7. _name=input('请输入你想看的漫画:')

  8. try:
  9.     os.mkdir('./{}'.format(_name))
  10. except:
  11.     print('已经存在相同的文件夹了,程序无法在继续进行!')
  12.     sys.exit()

  13. name_=parse.urlencode({'keyword':_name})
  14. url='https://www.mkzhan.com/search/?{}'.format(name_)
  15. html=requests.get(url=url)
  16. content=html.text
  17. soup=BeautifulSoup(content,'lxml')
  18. list1=soup.select('div.common-comic-item')
  19. names=[]
  20. hrefs=[]
  21. keywords=[]
  22. for str1 in list1:
  23.     names.append(str1.select('p.comic__title>a')[0].get_text())   # 匹配到的漫画名称
  24.     hrefs.append(str1.select('p.comic__title>a')[0]['href'])      # 漫画的网址
  25.     keywords.append(str1.select('p.comic-feature')[0].get_text())          # 漫画的主题
  26. print('匹配到的结果如下:')
  27. for i in range(len(names)):
  28.     print('【{}】-{}     {}'.format(i+1,names[i],keywords[i]))

  29. i=int(input('请输入你想看的漫画序号:'))
  30. print('你选择的是{}'.format(names[i-1]))


  31. url1='https://www.mkzhan.com'+hrefs[i-1]      # 漫画的链接
  32. html1=requests.get(url=url1)
  33. content1=html1.text
  34. soup1=BeautifulSoup(content1,'lxml')
  35. str2=soup1.select('ul.chapter__list-box.clearfix.hide')[0]
  36. list2=str2.select('li>a')
  37. name1=[]
  38. href1=[]
  39. for str3 in list2:
  40.     href1.append(str3['data-hreflink'])   # 漫画一章的链接
  41.     name1.append(str3.get_text().strip()) # 漫画一章的题目,去空格

  42. def Downlad(href1,path):
  43.     headers = {
  44.         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3756.400 QQBrowser/10.5.4039.400'}
  45.     url2='https://www.mkzhan.com'+href1
  46.     html2=requests.get(url=url2,headers=headers)
  47.     content2=html2.text
  48.     soup2=BeautifulSoup(content2,'lxml')
  49.     list_1=soup2.select('div.rd-article__pic.hide>img.lazy-read')  # 漫画一章中的所有内容列表
  50.     urls=[]
  51.     for str_1 in list_1:
  52.         urls.append(str_1['data-src'])

  53.     for i in range(len(urls)):
  54.         url=urls[i]
  55.         content3=requests.get(url=url,headers=headers)
  56.         with open(file=path+'/{}.jpg'.format(i+1),mode='wb') as f:
  57.             f.write(content3.content)
  58.     return True


  59. def Main_Downlad(href1:list,name1:list):
  60.     while True:
  61.         if len(href1)==0:
  62.             break
  63.         href=href1.pop()
  64.         name=name1.pop()
  65.         try:
  66.             path='./{}/{}'.format(_name,name)
  67.             os.mkdir(path=path)
  68.             if Downlad(href, path):
  69.                 print('线程{}正在下载章节{}'.format(threading.current_thread().getName(),name))
  70.         except:
  71.             pass

  72. threading_1=[]
  73. for i in range(30):
  74.     threading1=threading.Thread(target=Main_Downlad,args=(href1,name1,))
  75.     threading1.start()
  76.     threading_1.append(threading1)
  77. for i in threading_1:
  78.     i.join()
  79. print('当前线程为{}'.format(threading.current_thread().getName()))
复制代码

下载是真心快
记得评分@一个账号 @编程鱼C
捕获.PNG

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
编程鱼C + 1 + 1 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-14 09:09:28 | 显示全部楼层
不错有我当年的风范
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 09:12:38 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-14 09:13:47 | 显示全部楼层
你的回复在审核,我看不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 09:51:24 | 显示全部楼层
斗破苍穹???!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 10:31:20 | 显示全部楼层
斗破苍穹到840话怎么不动了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 10:38:03 | 显示全部楼层
乘号 发表于 2020-4-14 10:31
斗破苍穹到840话怎么不动了

应该是完了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 10:40:21 | 显示全部楼层
乘号 发表于 2020-4-14 10:31
斗破苍穹到840话怎么不动了

一共840话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 10:51:49 | 显示全部楼层

肿么可冷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 11:28:52 | 显示全部楼层


真的
我爬的漫客斋
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 11:29:51 | 显示全部楼层

我这么好的爬虫为什么没人看呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 17:21:47 | 显示全部楼层
为什么我用不了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 17:24:03 | 显示全部楼层

没下载第三方库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-18 15:18:52 | 显示全部楼层
输入漫画编号为什么有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-7 19:36:48 | 显示全部楼层
Traceback (most recent call last):
  File "E:/Python小程序/漫画爬取.py", line 20, in <module>
    soup=BeautifulSoup(content,'lxml')
  File "D:\电脑软件\Python38\lib\site-packages\bs4\__init__.py", line 243, in __init__
    raise FeatureNotFound(
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
大佬这怎么搞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-8 02:05:53 | 显示全部楼层
小小怪士兵 发表于 2020-10-7 19:36
Traceback (most recent call last):
  File "E:/Python小程序/漫画爬取.py", line 20, in
    soup=Bea ...

安装个html解析器
  1. pip3 install lxml
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-21 19:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表