鱼C论坛

 找回密码
 立即注册
查看: 2280|回复: 5

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

[复制链接]
发表于 2018-1-11 17:18:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

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)

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-11 22:34:53 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-13 16:45:38 | 显示全部楼层
我又来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-13 16:52:44 | 显示全部楼层
requests和selenium分别什么时候比较合适,第二个里面的网址是API 吗,你们都是怎么找到的(′д` )…彡…彡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-13 18:44:04 | 显示全部楼层
mintaka 发表于 2018-1-13 16:52
requests和selenium分别什么时候比较合适,第二个里面的网址是API 吗,你们都是怎么找到的(′д` )…彡… ...

selenium就是那种比较简单的方式,不需要分析,直接让程序帮你打开浏览器渲染好页面,就等同于你直接右键审查元素,就可以获得代码了,不过运行速度会比较慢;第二个网址不是api,只是用chrome浏览器,查看下面的加载内容,然后可以看出来是哪个地址给了你具体数据的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-24 16:19:14 | 显示全部楼层
支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-16 12:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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