python抓取动态网页(switch环境配置lxml抓取静态网页的难点及难点分析方法)

优采云 发布时间: 2021-10-10 11:14

  python抓取动态网页(switch环境配置lxml抓取静态网页的难点及难点分析方法)

  背景说明

  有使用switch游戏文件的需要,于是找了一个网站,网站有很多游戏资源,但是这种网站很容易失败,所以我打算用爬虫把资源下载下来,但是在实际爬取的过程中,为了获取实际的网盘地址,需要点击特定的按钮打开,所以结合selenium和html,抓包比较流行网站中的游戏实现

  主要收录四个部分

  Selenium 环境配置

  lxml 获取静态网页[√]

  硒得到饼干

  selenium 获取下载链接

  掌握了以上部分后,就可以算是对爬虫的介绍了

  获取游戏的具体页面

  爬虫环境在上一章已经配置好了。有兴趣的可以在专栏中找到。本章将抓取网站中各个游戏的具体链接

  网站 有按流行度排序的功能,可以按下载量对所有游戏进行排序。大约有四十页的数据。

  

  这个界面的网址很简单。第一个页面的格式是/games/page/1?order=hot 第二个页面的格式是/games/page/2?order=hot

  所以首先可以创建一个需要爬取的web_list 网站 准备爬取

  import time

import json

import re

import sys

import lxml.html as HTML

import requests

from lxml import etree

import json

aim_url_list = []

for i in range(10):

aim_url_list.append('https://www.xxxx.vip/games/page/{}?order=hot'.format(i+1))

  然后以第一页为例,分析在获取整体页面的情况下如何获取游戏名称和具体的网站。

  

  我们把鼠标右键放在游戏画面上,点击右键选择check

  

  可以解析出网站的实际元素组成

  

  可以看到实际需要的游戏网站和游戏名称都在div层,其中网站在a节点的href元素中,游戏名称在alt元素中a节点的子节点img

  所以我们可以写出下面的代码来得到

  write_dir = {}

for j in range(10):

r = requests.get(aim_url_list[j])

html = etree.HTML(r.text, etree.HTMLParser())

game_list = html.xpath('//div[@class="placeholder"]/a')

for game in game_list:

game_name = game.xpath('./img/@alt')[0]

game_url = game.xpath('./@href')[0]

write_dir[game_name] = game_url

print(write_dir)

with open('./game.json','w') as f:

json.dump(write_dir, f)

time.sleep(3)

  首先将父节点为div的节点a存储在game_list中,然后game_url获取节点a的href元素,game_name获取节点a的子节点img的alt元素,最后保存在write_dir中作为字典保存后续使用

  

  

  上面的完整代码如下

  import time

import json

import re

import sys

import lxml.html as HTML

import requests

from lxml import etree

import json

aim_url_list = []

for i in range(10):

aim_url_list.append('https://www.xxxx.vip/games/page/{}?order=hot'.format(i+1))

write_dir = {}

for j in range(10):

r = requests.get(aim_url_list[j])

html = etree.HTML(r.text, etree.HTMLParser())

game_list = html.xpath('//div[@class="placeholder"]/a')

for game in game_list:

game_name = game.xpath('./img/@alt')[0]

game_url = game.xpath('./@href')[0]

write_dir[game_name] = game_url

print(write_dir)

with open('./game.json','w') as f:

json.dump(write_dir, f)

time.sleep(3)

  网站 命名避免版权冲突,我们做了编码处理,有需要的朋友可以私信

  下一节将处理具体游戏的第二关网站。下一章也是过程中的主要难点,重点分析

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线