吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4170|回复: 6
收起左侧

[Python 转载] 爬文字和图片结合的一份作品

  [复制链接]
xstormli 发表于 2019-4-4 09:17
本帖最后由 xstormli 于 2019-4-4 13:08 编辑

从我第一次看到论坛上的爬虫也有一两个月了吧?
通过翻阅各大论坛,以及阅读相关书籍,以及请教各路大佬们,最终写出该作品。

本作品是用beautifulsoup + request来进行爬图和文字。
需要的import的包,请自行用pip install来进行安装。
想使用的童鞋一定要记得仔细阅读 # 后的标注文字!
另外你需要找一个能TextDecode的软件或者网页!

复制代码的时候可能会遇到中英文空格混乱导致invalid syntax的困扰,
请纯文本打开,Ctrl+A,Ctrl+C,Ctrl+P到你的IDE上!

[Python] 纯文本查看 复制代码
# -*- coding:utf-8 -*-
# 环境 python 3.x
# 从兴趣开始学习Python
# 我是pepCoder

import time
import re
import requests
import bs4
from os import path, makedirs
from urllib.parse import urljoin

# 通过下面的def解析出的link来进行抓取图片
def Lets_get_imgs(html):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
    } # 这货是为了让你伪装成普通浏览用户,而不是爬虫人士

    response = requests.get(html, headers = headers).content  # 开始爬
    soup = bs4.BeautifulSoup(response, 'html.parser')  # 解析, 方法有html.parser, html5lib, lxml, 看哪一个更实用
    soup_title = soup.find(name='div',attrs={'class':'mainbox viewthread'}).find('h2').get_text()  # 抓作品名称
    print('名称是:', soup_title)

    dirPath = "C:\\__作品发布__\\"  # 此处设置输出文件途径,可以自行修改。
    img_folder = path.join(dirPath, soup_title)
    makedirs(img_folder, exist_ok=True)

    soup_imgs = soup.find(name='div', attrs={'class':'t_msgfont'}).find_all('img', alt="", src=re.compile(".jpg"))
    for i, img in enumerate(soup_imgs, 1):
        src = img['src']  # 爬到的可能是一张图片的连接,也有可能是多张图片的连接,用enumerate函数进行一一分解保存
        img_name = path.join(img_folder, "{}.jpg".format(i))
        r = requests.get(src)
        with open(img_name, 'wb') as f:
            for chunk in r:
                f.write(chunk)
        print("文件储存为: {}".format(img_name))

# 访问分论坛页面获取帖子的连接
def acquiring_forum_links(forum, page):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
    } # 这货是为了让你伪装成普通浏览用户,而不是爬虫人士
    forum_page = 'http://www.(736973303031).com/forum/forum-'+str(forum)+'-'+str(page)+'.html'
    response = requests.get(forum_page, headers=headers).content  # 爬网址下来
    soup = bs4.BeautifulSoup(response, 'lxml')  # 解析, 方法有html.parser, html5lib, lxml, 看哪一个更实用
    html_raw = soup.find(name='div',attrs={'class':'mainbox threadlist'})\
        .find_all('a', style="font-weight: bold;color: blue")
    # 颜色:蓝色blue为大佬的新片,紫色purple是其他人发的,红色red是VR
    for i, link in enumerate(html_raw, 1):
        html_tail = link['href']  # 爬到的是一个连接的集合体,用enumerate函数进行一一分解
        html_domain = 'http://www.(736973303031).com/forum/'  # 请自行decoding(736973303031)
        html = urljoin(html_domain, html_tail)  # 爬下来的信息缺少domain,需要用urljoin函数进行补充合并
        print("获取连接成功: ", html)
        Lets_get_imgs(html)

def forum_preference():
    # 230是cavalier;143是infantry;
    forum = 143
    # 请从第二页起获取,第一页目前无法正常抓取图片文件
    page = 2
    acquiring_forum_links(forum, page)

print("=☆=★=☆=★=☆= - 开始执行 - =★=☆=★=☆=★=")
time.sleep(1)
forum_preference()
time.sleep(1)
print("=☆=★=☆=★=☆= - 结束指令 - =★=☆=★=☆=★=")

# 本作品的初衷主要是懒得一页一页的看网页,乱七八糟的很闹心。
# 不如爬到硬盘里自己先看看,喜欢就去下载,不喜欢就删了图片。
# 有什么不清楚不明白的地方可以大家沟通互相学习,
# 我的codes不完美,还有很大的进步空间。
# 记得挂梯子运行此文件
# decoding帖子 ‘https://www.zhainanre.com/2021.html’

免费评分

参与人数 1吾爱币 +1 收起 理由
周小玉 + 1 谢谢@Thanks!

查看全部评分

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

ebuy177 发表于 2019-4-4 19:50
木弄明白,咋 u出成品
唯一笑解千愁 发表于 2019-4-4 09:44
lmx288 发表于 2019-4-4 10:41
小安xiaoan 发表于 2019-4-4 14:45
学习了 谢谢大佬
 楼主| xstormli 发表于 2019-4-5 10:13

能好好说话么?XD

本帖最后由 xstormli 于 2019-4-5 19:11 编辑
ebuy177 发表于 2019-4-4 19:50
木弄明白,咋 u出成品

什么是“咋 u出成品”?我不看明白!
fengwolf3 发表于 2019-4-7 22:04
什么要decoding(736973303031)解析这个?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-16 05:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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