一.分析

1.爬取网站:https://xyq.163.com/chongwu/

2.获取网页源码:

request.get("https://xyq.163.com/chongwu/").text

这里就有问题了

这是查看网页源代码看到的源码,也是通过requests获取的源码,发现是空的

这是在检查处拿到的源码,发现有数据了

发现代码中没有使用json,js中也无相应json数据(2022.3.18更新:其实是有json文件的,当时没找到),因此数据是通过js动态加载出来的,因此选择selenium+火狐浏览器组合爬取页面(selenium是一个测试工具,selenium通过打开火狐驱动器加载火狐浏览器),可以获取加载js后的HTML页面

3.解析html,获取每个召唤兽data-id和名称

循环请求新的网址:https://xyq.163.com/chongwu/zhsxq.html?id=爬取的id&type=1

同样,新的网址依旧不能通过requests获取源代码

解析并抓取p标签的数据


二.代码实现:

from selenium import webdriver
from pyquery import PyQuery as pq
import pandas as pd firefox_options = webdriver.FirefoxOptions()
firefox_options.add_argument('--headless')
browser = webdriver.Firefox(options=firefox_options)
browser.get("https://xyq.163.com/chongwu/")
resp = browser.page_source
browser.quit()
data = pq(resp)
ret = data(".xxd li").items()
zhs_list = []
title = ["召唤兽名称"]
count = 0
for i in ret:
id = i.attr("data-id")
name = i.text()
browser2 = webdriver.Firefox(options=firefox_options)
browser2.get("https://xyq.163.com/chongwu/zhsxq.html?id=%d&type=1" % int(id))
resp2 = browser2.page_source
browser2.quit()
data2 = pq(resp2)
ret2 = data2(".zhszz p").items()
# 资质信息
zizhi_list = [name]
for j in ret2:
if count == 0:
top = j.text().split(" ")[0]
title.append(top)
zizhi = j('span').text()
zizhi_list.append(zizhi)
count += 1
zhs_list.append(zizhi_list) table = pd.DataFrame(zhs_list, columns=title)
print(table)
table.to_csv("梦幻西游召唤兽信息.csv",index=False,encoding="utf-8")

三.可能遇到的问题

1.如果没有下载selenium ,先下载

pip3 install selenium

2. 下载火狐浏览器驱动包firefoxdriver,https://github.com/mozilla/geckodriver/releases,下载完以后,将exe文件放入python.exe目录下,直接使用webdriver.Firefox()即可,否则就需要加上如下代码:

from selenium.webdriver.chrome.service import Service

s=Service(r"你的exe文件路径")
browser = webdriver.Firefox(service=s)


四.运行结果:

python爬取梦幻西游召唤兽资质信息(不包含变异)的更多相关文章

  1. Python爬取拉勾网招聘信息并写入Excel

    这个是我想爬取的链接:http://www.lagou.com/zhaopin/Python/?labelWords=label 页面显示如下: 在Chrome浏览器中审查元素,找到对应的链接: 然后 ...

  2. python爬取豆瓣视频信息代码

    目录 一:代码 二:结果如下(部分例子)   这里是爬取豆瓣视频信息,用pyquery库(jquery的python库). 一:代码 from urllib.request import quote ...

  3. Python 爬取美团酒店信息

    事由:近期和朋友聊天,聊到黄山酒店事情,需要了解一下黄山的酒店情况,然后就想着用python 爬一些数据出来,做个参考 主要思路:通过查找,基本思路清晰,目标明确,仅仅爬取美团莫一地区的酒店信息,不过 ...

  4. python 爬取豆瓣书籍信息

    继爬取 猫眼电影TOP100榜单 之后,再来爬一下豆瓣的书籍信息(主要是书的信息,评分及占比,评论并未爬取).原创,转载请联系我. 需求:爬取豆瓣某类型标签下的所有书籍的详细信息及评分 语言:pyth ...

  5. python 爬取bilibili 视频信息

    抓包时发现子菜单请求数据时一般需要rid,但的确存在一些如游戏->游戏赛事不使用rid,对于这种未进行处理,此外rid一般在主菜单的响应中,但有的如番剧这种,rid在子菜单的url中,此外返回的 ...

  6. python爬取网业信息案例

    需求:爬取网站上的公司信息 代码如下: import json import os import shutil import requests import re import time reques ...

  7. python爬取电影网站信息

    一.爬取前提1)本地安装了mysql数据库 5.6版本2)安装了Python 2.7 二.爬取内容 电影名称.电影简介.电影图片.电影下载链接 三.爬取逻辑1)进入电影网列表页, 针对列表的html内 ...

  8. python爬取豆瓣电影信息数据

    题外话+ 大家好啊,最近自己在做一个属于自己的博客网站(准备辞职回家养老了,明年再战)在家里 琐事也很多, 加上自己 一回到家就懒了(主要是家里冷啊! 广东十几度,老家几度,躲在被窝瑟瑟发抖,) 由于 ...

  9. python爬取考研专业信息

    伴随着2021考研成绩的公布,2021考研国家线也即将到来.大家是否有过考研的想法了?如果想考研我们就需要了解很多的信息,但是百度的上有太多信息需要我们去一一的鉴别,是比较浪费时间的.所以我们可以学习 ...

随机推荐

  1. 如何建立自己的代理IP池,减少爬虫被封的几率

    如何建立自己的代理IP池,减少爬虫被封的几率 在爬虫过程中,难免会遇到各种各样的反爬虫,运气不好,还会被对方网站给封了自己的IP,就访问不了对方的网站,爬虫也就凉凉. 代理参数-proxies 首先我 ...

  2. LeetCode-061-旋转链表

    旋转链表 题目描述:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置. 示例说明请见LeetCode官网. 来源:力扣(LeetCode) 链接:https://leet ...

  3. Spring入门二:整合mybatis

    一.SM思路分析 1.引入核心依赖及相关依赖:  spring(略).mybatis.mysql.mybatis-spring(减少自己实现FactoryBean接口).druid <depen ...

  4. tp5 webupload文件上传至七牛云

    1:composer安装: composer require qiniu/php-sdk 2: 配置使用: 在tp5.1的配置文件app.php中配置七牛云的参数 'qiniu' => [ 'a ...

  5. mysql5.7.35数据库迁移

    最近开发使用的测试环境的服务器使用的一台惠普E7300CPU\4G内存\160G西数硬盘配置,数据量近达20G!虽然作为测试数据库但也算是重要角色,一旦出现将严重影响工作.计划迁移至另一台做有RAID ...

  6. 『现学现忘』Docker基础 — 24、Docker图形化管理工具Portainer

    目录 1.Portainer介绍 2.Portainer安装启动 3.Portainer初始化配置 4.Portainer汉化 1.Portainer介绍 (1)Portainer 是一款轻量级的图形 ...

  7. ActiveMQ-模块代码-02

    模块模式 p2p模式 生产者 ConfigBeanQueue package com.producerp2p.producerp2p; import org.apache.activemq.comma ...

  8. mysql优化参数 (汇总)

    1 如下为128G内存32线程处理器的mariadb配置参数优化: [client]#password= your_passwordport= 3306 socket= /tmp/mysql.sock ...

  9. OpenMLDB 在线模块架构解析

    本文介绍 OpenMLDB 在线模块的架构,欢迎通过以下渠道了解关于 OpenMLDB 的更多信息 GitHub:GitHub - 4paradigm/OpenMLDB: OpenMLDB is an ...

  10. 记录java中常用的英文单词01

    专业缩写 POJO(plain ordinary java object)--简单的java对象 Spring-jdbc--为了使JDBC更加易于使用,spring在JDBC API上定义了一个抽象层 ...