栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python爬虫 壁纸下载

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python爬虫 壁纸下载

下载所有的壁纸,并且将壁纸和描述保存到数据库

数据库字段:id, type, small, big, title

运行请注意延时,不要暴力运行,影响他人正常使用

import json
import os
import random
import time

import pymysql
import requests
from bs4 import BeautifulSoup

host = 'www.netbian.com'
Referer = 'http://www.netbian.com/dongman/index_2.htm'
headers = [{
    'Referer': Referer,
    'Host': host,
    'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
}, {
    'Referer': Referer,
    'Host': host,
    'User-Agent': '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',
}]
db = pymysql.connect(
    host='localhost',
    user='root',
    password='123456',
    db='taici',
    charset='utf8mb4',
)


def download_img(img_url):
    h = {
        'Referer': Referer,
        'Host': "img.netbian.com",
        'User-Agent': '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',
    }
    r = requests.get(img_url, headers=h, stream=True)
    print(img_url)
    print(r.status_code)  # 返回状态码
    if r.status_code == 200:
        path = './img/%s' % getUrlFileName(img_url)
        if os.path.exists(path):
            pass
        else:
            open(path, 'wb').write(r.content)  # 将内容写入图片
        print("done")
    del r


def getUrlFileName(url):
    return os.path.basename(url)


def inserSql(type, small, big, title):
    global db
    cursor = db.cursor()
    sql = "INSERT INTO bizhi(type, small, big, title) " 
          "VALUES ('%s', '%s', '%s', '%s')" % (type, small, big, title)
    try:
        # 执行sql语句
        cursor.execute(sql)
    except Exception as e:
        print("插入数据失败:", e)
    else:
        db.commit()


def pa(url):
    ra = random.randint(0, 1)
    s = requests.session()
    h = headers[ra]
    response = s.request('get', url, headers=h).content
    html = BeautifulSoup(response, 'html.parser')
    return html


def main():
    page = 141
    for index in range(2, page + 1):
        time.sleep(3)
        if index != 1:
            url = 'http://www.netbian.com/dongman/index_%d.htm' % index
        else:
            url = 'http://www.netbian.com/dongman/index.htm'
        print(url)
        html = pa(url)
        ce = html.find("div", {"class": "list"})
        table = ce.find("ul")
        liArr = table.findAll("li")
        # 遍历单页的每个图片
        for lis in liArr:
            time.sleep(1)
            try:
                if lis.attrs["class"] == "nextpage":
                    break
            except:
                pass
            li = lis.find("img")
            small = li.attrs["src"]
            # 下载缩略图
            download_img(small)
            title = li.attrs["alt"]
            href = lis.find("a").attrs["href"]
            if href[0] == '/':
                href = "http://www.netbian.com" + href
                imgHref = pa(href)
                big = imgHref.find("div", {"class": "pic"}).find("img").attrs["src"]
                download_img(big)
                inserSql('动漫', getUrlFileName(small), getUrlFileName(big), title)
        print("OK", index)


if __name__ == '__main__':
    main()
    db.close()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/957990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号