QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

鱼友Ⅰ

Rank: 2Rank: 2

积分
181
查看: 238|回复: 5

[作品展示] 新手写的爬取天刀壁纸动态网页的两种方式

[复制链接]
最佳答案
11 
累计签到:92 天
连续签到:1 天
枫树霜雪 发表于 2018-1-11 17:18:04 2385 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
第一个是使用selenium+Chromedriver,在浏览器加载数据后,获得渲染好的网页代码,使用正则匹配图片链接
第二个是使用Chrom的开发者工具,找到获得数据的网址,然后在数据里面找到需要的数据,然后下载
第一个:
  1. from selenium import webdriver
  2. from bs4 import BeautifulSoup
  3. import time
  4. import re
  5. import os
  6. import urllib.request

  7. driver=webdriver.Chrome("C://Program Files (x86)//Google//Chrome//Application//chromedriver_win32//chromedriver.exe")
  8. #这里使用的Chromedriver,可以在网上下载与自己版本相同的,32位的就可以了;也可以下载PhantomJS,是一个无界面浏览器
  9. driver.get("http://wuxia.qq.com/web201503/media-wallpaper.shtml")


  10. time.sleep(3)
  11. #在进入页面需要等待一段时间,等浏览器渲染好,这样就可以直接获得加载好的图片地址了

  12. os.chdir("F://Python36//项目//图片//天涯明月刀")

  13. html=BeautifulSoup(driver.page_source,"html.parser")
  14. pic_url=html.findAll("a",{"href":re.compile("//game.+1920x1024\.jpg")})
  15. #使用正则匹配图片链接
  16. count=0
  17. for each in pic_url:
  18.     count+=1
  19.     each_url="http:"+each["href"]
  20.     pic_name=str(count)+".jpg"
  21.     urllib.request.urlretrieve(each_url,pic_name)
  22.     print("第 %s 张图片下载成功"%count)
复制代码

第二个:
  1. import requests
  2. import json
  3. from urllib.request import urlretrieve
  4. import os


  5. url="http://game.gtimg.cn/images/wuxia/web201501/datas/gamedata_wallpaper.js?v=0.07262971159255338"
  6. #这个url是网页从服务器获得的数据的真实地址,可以使用谷歌浏览器的开发者模式找到
  7. res=requests.get(url)
  8. res=res.content.decode("gbk")
  9. res=res.split('"lists":',1)[1]
  10. res=res.rsplit("}",1)[0]
  11. res=res.replace("//"," ")
  12. #这里获得地址貌似不是json格式的,我只能用最蠢的方法获得里面的元素
  13. res=eval(res)
  14. #将数据从字符串格式转为列表
  15. os.chdir("F://Python36//项目//图片//天涯明月刀")
  16. count=0
  17. for each in res:
  18.     count+=1
  19.     pic_name=str(count)+".jpg"
  20.     try:
  21.         urlretrieve("http://game.gtimg.cn/images/wuxia/picture/wallpaper/"+each["dlpic"][2][1],pic_name)
  22.         #这里的图片地址可以在网页源文件下面的js知道,加上我们从服务器返回的数据就是图片的真实地址了
  23.     except IndexError:
  24.         urlretrieve("http://game.gtimg.cn/images/wuxia/picture/wallpaper/"+each["dlpic"][1][1],pic_name)
  25.     print("第%s张图片 下载成功"%count)

复制代码
楼层
跳转到指定楼层
最佳答案
3 
累计签到:111 天
连续签到:1 天
来钓鱼 发表于 2018-1-11 22:34:53 | 显示全部楼层
最佳答案
1 
累计签到:118 天
连续签到:9 天
mintaka 发表于 2018-1-13 16:45:38 | 显示全部楼层
我又来了
最佳答案
1 
累计签到:118 天
连续签到:9 天
mintaka 发表于 2018-1-13 16:52:44 | 显示全部楼层
requests和selenium分别什么时候比较合适,第二个里面的网址是API 吗,你们都是怎么找到的(′д` )…彡…彡
最佳答案
11 
累计签到:92 天
连续签到:1 天
枫树霜雪  楼主| 发表于 2018-1-13 18:44:04 | 显示全部楼层
mintaka 发表于 2018-1-13 16:52
requests和selenium分别什么时候比较合适,第二个里面的网址是API 吗,你们都是怎么找到的(′д` )…彡… ...

selenium就是那种比较简单的方式,不需要分析,直接让程序帮你打开浏览器渲染好页面,就等同于你直接右键审查元素,就可以获得代码了,不过运行速度会比较慢;第二个网址不是api,只是用chrome浏览器,查看下面的加载内容,然后可以看出来是哪个地址给了你具体数据的
最佳答案
0 
累计签到:19 天
连续签到:1 天
肯布鲁克 发表于 2018-1-24 16:19:14 | 显示全部楼层
支持

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-4-19 22:03

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