首页 > 编程语言 >Python 爬虫,gk-design 网站作品信息采集爬虫源码!

Python 爬虫,gk-design 网站作品信息采集爬虫源码!

时间:2023-12-25 10:00:52浏览次数:39  
标签:img get Python h1 tree 爬虫 imgs 源码 print


一个比较简单的爬虫源码,爬取 gk-design 网站作品信息,包括图片及文字内容信息,几乎没有限制,适合新人学习练手使用,文末附上源码供参考学习。

Python 爬虫,gk-design 网站作品信息采集爬虫源码!_爬虫

小日子的网站随便爬,加大力度,使劲搞,适合 Python 爬虫新人练手使用和学习,如果你正在找练手网站,不妨尝试爬取下载数据。

Python 爬虫,gk-design 网站作品信息采集爬虫源码!_Windows_02

这里分享几个简单的数据整理:

  1. 标题获取及处理 使用了 split() 函数获取标题内容数据。
h1=tree.xpath('//title/text()')[0]
h1=h1.split('|')[0]
h1=h1.strip()
pattern = r"[\/\\\:\*\?\"\<\>\|]"
h1=re.sub(pattern, "_", h1)  # 替换为下划线
print(h1)
  1. 图片数据添加 使用了 insert() 函数添加图片到列表头部。
img=tree.xpath('//section[@class="cover"]/div/img/@data-src')[0]
#print(img)
imgs=tree.xpath('//section[@class="gallery"]/div[@class="frame"]/img/@data-src')
imgs.insert(0,img)
print(len(imgs))
print(imgs)

附完整源码参考:

# -*- coding: UTF-8 -*-
# @公众号:eryeji
# https://www.gk-design.co.jp/works/product-design/

import requests
from lxml import etree
import time
import random
import re
import threading
import os


def get_ua():
    ua_list = [
        'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36Chrome 17.0',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
        'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0Firefox 4.0.1',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
        'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
        'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
        'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',
    ]
    ua=random.choice(ua_list)
    return ua


def get_hrefs():
    url="https://www.gk-design.co.jp/works/product-design/"
    headers={
        "User-Agent":get_ua()
    }
    response=requests.get(url=url,headers=headers,timeout=6)
    print(response.status_code)
    html = response.content.decode('utf-8')
    #print(html)
    tree = etree.HTML(html)
    hrefs = tree.xpath('//ul[@class="works_list list clearfix"]/li/a/@href')
    print(len(hrefs))
    print(hrefs)
    for href in hrefs:
        get_detail(href)
        time.sleep(3)



def get_detail(href):
    headers = {
        "User-Agent": get_ua()
    }
    response = requests.get(url=href, headers=headers, timeout=6)
    print(response.status_code)
    html = response.content.decode('utf-8')
    #print(html)
    tree = etree.HTML(html)
    h1=tree.xpath('//title/text()')[0]
    h1=h1.split('|')[0]
    h1=h1.strip()
    pattern = r"[\/\\\:\*\?\"\<\>\|]"
    h1=re.sub(pattern, "_", h1)  # 替换为下划线
    print(h1)
    path = f'{h1}/'
    os.makedirs(path, exist_ok=True)
    print(f">> 生成保存目录 {h1} 文件夹成功!")
    ptexts=tree.xpath('//div[@class="row clearfix"]//text()')
    ptext=''.join(ptexts)
    print(ptext)
    with open(f'{path}{h1}.txt','w',encoding='utf-8') as f:
        f.write(f'{h1}\n{ptext}')
    print(f">> 保存 {h1}.txt 文件成功!")
    img=tree.xpath('//section[@class="cover"]/div/img/@data-src')[0]
    #print(img)
    imgs=tree.xpath('//section[@class="gallery"]/div[@class="frame"]/img/@data-src')
    imgs.insert(0,img)
    print(len(imgs))
    print(imgs)
    down_imgs(path, imgs)




# 3次重试
def get_resp(url):
    i = 0
    while i < 4:
        try:
            headers = {
               "User-Agent":get_ua()
            }
            response = requests.get(url, headers=headers, timeout=10)
            print(response.status_code)
            return response
        except requests.exceptions.RequestException:
            i += 1
            print(f">> 获取网页出错,6S后将重试获取第:{i} 次")
            time.sleep(i * 2)



def down_imgs(path,imgs):
    threadings = []
    for img in imgs:
        t = threading.Thread(target=get_img, args=(path,img))
        threadings.append(t)
        t.start()

    for x in threadings:
        x.join()

    print(f"恭喜,多线程下载图片完成!")


#下载图片
def get_img(path,img_url):
    img_name = img_url.split('/')[-1]
    r = get_resp(img_url)
    time.sleep(1)
    with open(f'{path}{img_name}', 'wb')as f:
        f.write(r.content)
    print(f">> {img_name}下载图片成功")


def main():
    get_hrefs()


if __name__=='__main__':
    main()

往期推荐

Python 爬虫,gk-design 网站作品信息采集爬虫源码!_python_03

微博爬虫,python微博用户主页小姐姐图片内容采集爬虫

Python 爬虫,gk-design 网站作品信息采集爬虫源码!_python_04

图片爬虫,手把手教你Python多线程下载获取图片

Python 爬虫,gk-design 网站作品信息采集爬虫源码!_python_05

Python下载爬虫,解析跳转真实链接下载文件

Python 爬虫,gk-design 网站作品信息采集爬虫源码!_html_06

Python爬虫,B站视频下载源码脚本工具助手附exe

·················END·················

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .


Python 爬虫,gk-design 网站作品信息采集爬虫源码!_爬虫_07

Python 爬虫,gk-design 网站作品信息采集爬虫源码!_html_08

关注我的都变秃了

说错了,都变强了!

不信你试试

Python 爬虫,gk-design 网站作品信息采集爬虫源码!_爬虫_09

扫码关注最新动态

公众号ID:eryeji

标签:img,get,Python,h1,tree,爬虫,imgs,源码,print
From: https://blog.51cto.com/u_15200177/8963607

相关文章

  • Python类的使用
    在Python中,类(Class)是用于创建对象(object)的蓝图。类提供了对象的属性(数据)和方法(操作数据的函数)的定义。使用类可以帮助你创建具有相同属性和方法的多个对象,这是面向对象编程(OOP)的一个核心概念。类的定义与使用定义一个类:类以class关键字开始,后跟类名和冒号:。类名通常使用大驼峰命......
  • mac zsh: command not found: python
    前言在mac上安装python后,会自动在.zprofile文件中,加入:#SettingPATHforPython3.12#Theoriginalversionissavedin.zprofile.pysavePATH="/Library/Frameworks/Python.framework/Versions/3.12/bin:${PATH}"exportPATH此时,python-V,还是会报错zsh:comman......
  • Netty源码学习9——从Timer到ScheduledThreadPoolExecutor到HashedWheelTimer
    系列文章目录和关于我一丶前言之前在学习netty源码的时候,经常看nettyhash时间轮(HashedWheelTimer)的出现,时间轮作为一种定时调度机制,在jdk中还存在Timer和ScheduledThreadPoolExecutor。那么为什么netty要重复造轮子昵,HashedWheelTimer又是如何实现的,解决了什么问题?这一篇将从T......
  • 饮冰十年-人工智能-FastAPI-01- 深入理解 Python 协程
    Python协程是一种强大的异步编程工具,可以有效地处理并发任务,提高程序性能。在这篇博客中,我们将深入探讨协程的概念、用法以及如何在Python中使用它们。一、什么是协程协程定义协程(Coroutine)是一种特殊的函数,它可以在执行中暂停并在稍后的时间点继续执行。这种能力使得我们能......
  • python模拟体育竞技分析
    (1)体育竞技模拟分析:采用乒乓球比赛规则‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬a.一局比赛:‪‬‪‬‪‬‪‬‪‬......
  • python网站创建014:jQuery的引入、选择器和筛选器
    1.下载jQuery之后,那如何使用呢?假如我想操作一个div标签,给这个标签补充文字<!DOCTYPEhtml><html><head><title>初识:JavaScript</title><metacharset="UTF-8"></head><body><!--定义一个无文本的div标签--><div......
  • 【Python常用模块之logging模块】---日志输出功能(示例代码)
    title:【Python常用模块之logging模块】---日志输出功能(示例代码)date:2023-12-2420:14:06updated:2023-12-2420:23:00description:【Python常用模块之logging模块】---日志输出功能(示例代码)cover:https://pythonjishu.com/tdcgatffvrvdoop/2023年6月......
  • 【python常用模块之sys模块】---系统模块(sys)
    title:【python常用模块之sys模块】---系统模块(sys)date:2023-12-2419:54:06updated:2023-12-2420:05:00description:【python常用模块之sys模块】---系统模块(sys)cover:http://www.tuohang.net/article/277594.htmlsys模块“sys”即“system”,“系统......
  • 【python常用模块之subprocess模块】---subprocess模块
    title:【python常用模块之subprocess模块】---subprocess模块date:2023-12-2418:54:06updated:2023-12-2419:50:00description:【python常用模块之subprocess模块】---subprocess模块cover:https://www.cnblogs.com/xxpythonxx/p/17625032.htmlsubproc......
  • 人工智能算法原理与代码实战:从Python到C++
    1.背景介绍人工智能(ArtificialIntelligence,AI)是一门研究如何让计算机模拟人类智能的学科。它涉及到多个领域,包括机器学习、深度学习、计算机视觉、自然语言处理、机器人等。随着数据量的增加和计算能力的提升,人工智能技术的发展得到了极大的推动。在过去的几年里,人工智能的研究......