吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2053|回复: 12
收起左侧

[Python 转载] 多线程爬取漫画

  [复制链接]
Ldfd 发表于 2020-8-19 22:05
本帖最后由 Ldfd 于 2020-8-19 23:03 编辑
先讲个笑话,程序员是怎么教孩子数数的,0,1,2,3(所以第0张就很人道)

talk is cheap, show me the code.
[Python] 纯文本查看 复制代码
import requests
from lxml import etree
import re
import os
import threading


def makefolder():
    for name in NameList:
        os.makedirs('./comic/' + name, exist_ok=True)


def getsrc(url, num, sem):
    webpage = requests.get(url, headers=headers).text
    srcre = re.compile('upload/files/[0-9]*/[0-9]*/[0-9]*.jpg')
    src = srcre.findall(webpage)
    src_new = []
    for x in src:
        x = f"https://img.yaoyaoliao.com/{x}"
        src_new.append(x)
    length = len(src_new)
    for y in range(length):
        picture = requests.get(src_new[y]).content
        with open(f"./commic/{NameList[num]}/第{y}张.jpg", 'wb')as pic:
            pic.write(picture)
    sem.release()
    print(f"{NameList[num]}已经爬完")


headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 '
                  'Safari/537.36 '
}
Website = 'https://m.bnmanhua.com'
html = requests.get('https://m.bnmanhua.com/comic/1163.html', headers=headers).text
xml = etree.HTML(html)
NameList = xml.xpath('/html/body/div[4]/div[2]/ul/li/a/text()')
UrlList = xml.xpath('/html/body/div[4]/div[2]/ul/li/a/@href')
UrlList_new = []
for ii in UrlList:
    ii = Website + ii
    UrlList_new.append(ii)
makefolder()
sema = threading.Semaphore(10)
for lmqz in range(len(UrlList_new)):
    sema.acquire()
    t = threading.Thread(target=getsrc, args=(UrlList_new[lmqz], lmqz, sema))
    t.start()

严格符合PEP8,保证加到pycharm里是绿色对号[doge]
还有就别说那个入口了,动态语言的优势必须发挥(懒地改了*1)
欢迎大佬帮我优化优化
感谢@香谢枫林 的线程控制,解决了我分组的困扰
参考地址:https://www.52pojie.cn/thread-1117105-1-1.html
[Asm] 纯文本查看 复制代码
html = requests.get('https://m.bnmanhua.com/comic/1163.html', headers=headers).text
修改此处的数字换页面

这个写了有一段时间了,网站最新有些变化
图片内容有的是/upload有的是/zhang
改一下正则就能用,再加个判断就能完整下载
(我爬得是早期作品所以很简单懒得改*2)
有人需要(不可能的)就打包修改一下。
再次欢迎各路大神修改

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
yjn866y + 1 + 1 我很赞同!
三木木ben + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Ldfd 发表于 2020-8-19 23:09
minibeetuaman 发表于 2020-8-19 23:07
那线程执行超时要怎么解决?

没考虑,这样下来就那一个线程一直卡着,不过爬个漫画应该不至于
头像被屏蔽
Menguy 发表于 2020-8-20 00:29
慕容紫英丶 发表于 2020-8-19 22:07
不负韶华 发表于 2020-8-19 22:25
xpath其实不用那么啰嗦,太冗长了,
 楼主| Ldfd 发表于 2020-8-19 22:28
不负韶华 发表于 2020-8-19 22:25
xpath其实不用那么啰嗦,太冗长了,

右键复制的哈哈,方便
尘封记 发表于 2020-8-19 22:54
哦看不懂
 楼主| Ldfd 发表于 2020-8-19 23:05

你你~忍心灌水
minibeetuaman 发表于 2020-8-19 23:07
那线程执行超时要怎么解决?
minibeetuaman 发表于 2020-8-19 23:11
可以考虑用线程池来处理
djnym 发表于 2020-8-19 23:12
大佬牛批
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 01:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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