python爬虫-解决网页中取不到的信息-”真假网页“

31 篇文章 0 订阅
6 篇文章 0 订阅

首先介绍一下我所理解的“真假网页”,“真网页”就是我们可以直接通过网址(URL),获取这个“真网页”上的任何内容。“假网页”就是我们通过URL爬取网页信息时得到的结果为空,这一点相信大家在写爬虫程序时会经常遇到。比如我们想获取一个网页的信息,利用requests的get方法对URL进行请求,再用BeautifulSoup进行解析后我们发现得到的结果为空!这样我们就可能使用了一个“假网页”,

比如我们想获取电子学报的目录的所有信息,如下图所示:

通常我们的写法是这样的:

import requests
from bs4 import BeautifulSoup
res = requests.get("http://navi.cnki.net/KNavi/JournalDetail?pcode=CJFD&pykm=DZXU")
soup = BeautifulSoup(res.text,'html.parser')
print(soup)

但是我们打印soup后发现其中并没有任何的目录信息!也就是说,这个网址是一个“假网址”,我们想要的内容虽然显示在了这个网址上,但我们却爬取不到关于他的任何信息!那么只有一种可能,就是它的信息在别的网址上,那么我们会考率2种情况:1.异步加载 2.异步传输 (这两个有点像,大家别弄混了!)

1.异步加载是动态爬取得典型情况,也就是 不是 直接呈现给我们的,而是通过加载后才呈现给我们的,这部分通常在JavaScript中,我们依次检查JavaScript,就会找到真正的网址!如下图中蓝色框框可见

2.异步传输:通常数据传输有两种模式,同步传输和异步传输。同步传输是将一个数据块直接发送,这样呈现给我们的就是通常的静态网页,那么和为异步传输?异步传输是将数据分为一块一块的,不直接呈现一个完整的数据,那么这部分数据在XHR下,如下如所示:

我们依次检查XHR中每一项,如下如所示:

我们可以看到有4个XHR,依次检查,我们点击每一项,在右侧相应中查看自己想要的信息,我们可以在第3个XHR中发现自己想要的信息,如下图所示:

那么此时我们就发现了自己想要的信息,那么接下来我们点击消息头,在消息头中我们可以看到请求网址,那么这个网址就是我们苦苦寻找的”真网址“,接着通过以下代码就可以获取自己想要的信息了!

from bs4 import BeautifulSoup
import requests
url='http://navi.cnki.net/knavi/JournalDetail/GetArticleList?year=2018&issue=04&pykm=DZXU&pageIdx=0&pcode=CJFD'
res = requests.get(url)
soup = BeautifulSoup(res.text,'html.parser')
print(soup)
那么“真假网址”的问题就解决了,欢迎大家一起讨论!
  • 36
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带鱼工作室

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值