一、检查

首先进入该网站的https://www.gamersky.com/robots.txt页面

给出提示:

弹出错误页面

  注:

  • 网络爬虫:自动或人工识别robots.txt,再进行内容爬取
  • 约束性:robots协议建议但非约束性,不遵守可能存在法律风险

如果一个网站不设置robots协议,说明所有内容都可以爬取,所以该网站为可爬取内容。

二、实现

源程序如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : HtmlParser.py
# @Author: 赵路仓
# @Date  : 2020/2/28
# @Desc  : 爬取游民星空网站每周精选壁纸
# @Contact : 398333404@qq.com import requests
from bs4 import BeautifulSoup
import os
import re# 网址
url = "http://so.gamersky.com/all/news?s=%u58c1%u7eb8%u7cbe%u9009&type=hot&sort=des&p="
# 请求头
head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}# 检查是否存在filePath路径的文件夹,若无则创建,若有则不执行
def createFile(filePath):if os.path.exists(filePath):print('%s:存在' % filePath)else:try:os.mkdir(filePath)print('新建文件夹:%s' % filePath)except:print("创建文件夹失败!")# 获取每周壁纸的主题超链接
def href(url):try:path = "D:/img"createFile(path)# 清空html_href.txt的内容f_init = open(path + '/html_href.txt', 'w', encoding='utf-8')f_init.write("")f_init.close()f = open(path + '/html_href.txt', 'a+', encoding='utf-8')for i in range(1, 12):r = requests.get(url + str(i))r.encoding = r.apparent_encodingsoup = BeautifulSoup(r.text, 'html.parser')hrefs = soup.find_all("div", {"class": "link"})for h in hrefs:print(h.string)# 写入txt文件f.write(h.string + '\n')f.close()print("爬取成功!")except:print("爬取壁纸主题失败!")# 读取html_href(主题地址超链接)并写入img_hef(图片地址)
def read():try:path = "D:/img"f_read = open(path + '/html_href.txt', 'r+', encoding='utf-8')# 清空img_href.txt的内容f_init = open(path + '/img_href.txt', 'w', encoding='utf-8')f_init.write("")f_init.close()# 读取txt文件内容f_writer = open(path + '/img_href.txt', 'a+', encoding='utf-8')number=1for line in f_read:try:line = line.rstrip("\n")r = requests.get(line, headers=head, timeout=3)soup = BeautifulSoup(r.text, 'html.parser')imgs = soup.find_all("p", {"align": "center"})try:for i in imgs:print(re.sub(r'http.*shtml.', '', i.find("a").attrs['href'])+" 当前第"+str(number)+"张图片!")f_writer.write(re.sub(r'http.*shtml.', '', i.find("a").attrs['href']) + '\n')number+=1except:print("图片地址出错!")except:print("超链接出错!")f_read.close()f_writer.close()print("共有"+str(number)+"个图片地址!")except:print("读取html_href并写入img_href过程失败!!")def save_img():path = "D:/img/"img_path="D:/img/images/"createFile(path)f_read = open(path + 'img_href.txt', 'r+', encoding='utf-8')number = 1for line in f_read:try:line = line.rstrip("\n")# 根据个数顺序重命名名称f_write = open(img_path + str(number) + '.jpg', 'wb')r = requests.get(line)# 打印状态码print(r.status_code)# 如果图片地址有效则下载图片状态码200,否则跳过。if r.status_code == 200:f_write.write(r.content)# 若保存成功,则命名顺序+1number += 1print("当前保存第" + str(number) + "张图片。")f_write.close()except:print("下载图片出错!!")f_read.close()if __name__ == "__main__":href(url)read()save_img()
# 测试下载图片↓
# save_img("https://img1.gamersky.com/image2019/04/20190427_ljt_red_220_3/gamersky_001origin_001_201942716489B7.jpg","D:/img/1.jpg")

  路径无需改动,但有需求可自行更改。

  在爬取过程中,在游民星空网站的壁纸栏是通过js跳转,页面不翻页的模式,但后来可以通过搜索——壁纸到达如下界面:

三、实现步骤

  • 然后通过 href(url) 函数爬取每周的大标题写入 html_href.txt 中
  • 通过 read() 读取写入的标题超链接,将爬取的图片地址写入  img_href.txt 中。
  • 最后一步,通过 save_img() 函数读取图片地址,下载壁纸图片。

四、效果

    至此完成!!                

[Python]爬取 游民星空网站 每周精选壁纸(1080高清壁纸) 网络爬虫相关推荐

  1. python爬虫(2)爬取游民星空网的图片

    python 入门级别爬虫 目的:爬取游民星空的图片 前两天在游民星空看到几张美图,然后就想把它保存下来,但是一个一个的右键保存,太不爽了,身为一个程序源,一个码农,怎么能这么低级的保存呢? 然后最近 ...

  2. 教你用Python爬取表情包网站下的全部表情图片

    教你用Python爬取表情包网站下的全部表情图片 又是我啦~~~ 最近上网的时候老看到有人用Python爬取表情包,心痒痒自己也整了一个. 使用到的扩展库:BeautifulSoup, request ...

  3. python 爬取猫眼电影网站数据

    完整代码下载:https://github.com/tanjunchen/SpiderProject/tree/master/maoyan python 爬取 movie.douban.com 网站 ...

  4. python爬取安居客网站上北京二手房数据

    目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...

  5. 手把手教你用python爬取人人贷网站借款人信息

    P2P是近年来很热的一个行业,由于这个行业在国内兴起才不久,国内的很多学者对这个行业都兴趣盎然,在大学研究互联网金融的学者更是有一大群.小编是学金融出身,深知数据在做学术研究的重要性,之前有不少学互联 ...

  6. Python爬取某音乐网站

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 爬取某音乐网站,我们先搜索歌曲,然后随意点进一首歌,然后在新弹出的歌曲页面按F12开始抓包,并刷新 ...

  7. 利用python爬取实习僧网站上的数据

    最近在找实习,就顺便想到用python爬取一些职位信息看看,有哪些岗位比较缺人. #_*_coding:utf-8_*_import requests from bs4 import Beautifu ...

  8. Python爬取斗鱼直播网站信息

    一.需求 爬取斗鱼直播网站信息,如直播名字.主播名字.热度.图片和房间网址,将这些数据保存到csv文件中,并单独创建文件夹保存图片. 斗鱼直播网址:https://www.douyu.com/g_LO ...

  9. 爬取投票页面,音乐与视频,高清图片

    首先一般情况下爬虫爬取网页数据不违法,但有些收费或者限制下载次数的音乐网站,视频网站等数据很容易爬取到,我最近就爬取了好几个网站的音乐与视频,也用自动化模块分析了QQ空间,写了新型冠状肺炎的数据清洗与 ...

最新文章

  1. 只让输入数字的输入框(javascript)
  2. 一个员工的离职,背后都意味着什么?
  3. Arachni web扫描工具
  4. golang中的select详解
  5. WPF阴影效果(DropShadowEffect)
  6. 事件捕获(capture)和冒泡事件(Bubble)
  7. Taro+react开发(84):taro路由跳转
  8. OpenJTAG调试S3C2440裸板程序
  9. 2012年3月份第1周51Aspx源码发布详情
  10. linux下c语言队列,C语言队列的实现
  11. 【原】从一个bug浅谈YUI3组件的资源加载
  12. 河北工业大学c语言寻宝游戏,计算机技术基础(c语言)课程设计 寻宝游戏.doc
  13. 计算机磁盘扩展,win7如何对硬盘进行扩展分区
  14. SQL优化步骤(建议收藏)
  15. android dialog设置背景图片,如何为Dialog设置背景图片?
  16. CH341a烧录器烧录华硕BIOS
  17. 小白装openstack(二) 安装NTP服务
  18. 【css太极图】html+css用一个div画出太极图
  19. Asp.Net Core 中_ViewStart.cshtml 及_ViewImports.cshtml 的作用
  20. 教你快速高效接入SDK——Unity统一接入渠道SDK(Android篇)

热门文章

  1. 不懂电脑出现的误解,你中招了没?
  2. java输入数组数据并保存到数组中(指定数组大小、不指定数组大小和直接输入数组)
  3. 荆雪艳软件工程第一次作业
  4. 修改 git 默认编辑器
  5. linux中dd命令详解,Linux中DD命令详解
  6. 嗑技热点 | 微信豆、连麦、美颜集体亮相,视频号大更新!
  7. Vmware虚拟机进入BIOS方法
  8. 五行与情志的之间的相生相克
  9. 关于Qt中线程的挂起和唤醒问题
  10. java音乐不能播放_java的音乐播放器不能播放?