首页 编程教程正文

爬文字和图片结合的一份作品

piaodoo 编程教程 2020-02-22 22:02:31 921 0 python教程

本文来源吾爱破解论坛

本帖最后由 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’

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7392.html

搜索