过去的云雾 发表于 2021-11-22 10:50:12

python爬虫爬取知识库,json报文无法完整获取

最近想把统信uos的问题库离线化,在爬取过程中发现无法获取完整的返回,无论使用httpx还是用requests。也试过selenium,同样的结果。其中有意思的是firefox中对响应报文提示响应已截断,chrome没有类似提示也能够完整的获取json响应内容。

import httpx
import json
from bs4 import BeautifulSoup


def getHtml():
    data = []
    header = {"User-Agent": "Chrome/96.0.4664.45 Safari/537.36"}
    url = "https://ecology.chinauos.com/adaptidentification/uos/knowledge/everyoneget?parent=%E7%B3%BB%E7%BB%9F%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98&type=%E5%85%B6%E4%BB%96%E7%B3%BB%E7%BB%9F%E9%97%AE%E9%A2%98&"
    try:
      resp = httpx.get(url, headers = header)
    finally:
      resp.close()
    print(resp.content)
   
def dataReact(html):
    soup = BeautifulSoup(html,'lxml')
    print(soup.prettify())
   
if __name__ == '__main__':
    textHtml = []
    html = getHtml()

suchocolate 发表于 2021-11-22 11:16:32

我看得到1278项,这也不完整吗?

过去的云雾 发表于 2021-11-22 13:32:34

不完整,03003-00105

suchocolate 发表于 2021-11-22 14:07:24

过去的云雾 发表于 2021-11-22 13:32
不完整,03003-00105

03003-00105是指什么?

过去的云雾 发表于 2021-11-23 10:56:32

本帖最后由 过去的云雾 于 2021-11-23 11:01 编辑

suchocolate 发表于 2021-11-22 14:07
03003-00105是指什么?

我错了,好像只有1278条数据

suchocolate 发表于 2021-11-23 12:00:08

过去的云雾 发表于 2021-11-23 10:56
我错了,好像只有1278条数据

是不是还有下一页的url,访问那一页才能得到后面的数据?

过去的云雾 发表于 2021-11-23 13:33:00

suchocolate 发表于 2021-11-23 12:00
是不是还有下一页的url,访问那一页才能得到后面的数据?

没有了,就是这个页面

suchocolate 发表于 2021-11-23 13:38:15

过去的云雾 发表于 2021-11-23 13:33
没有了,就是这个页面

那接下来处理这些数据就可以了。

过去的云雾 发表于 2021-11-23 14:55:55

suchocolate 发表于 2021-11-23 13:38
那接下来处理这些数据就可以了。

请看一下原贴中的截图,python库取回的结果不完整,报文被截断了

suchocolate 发表于 2021-11-23 15:25:17

过去的云雾 发表于 2021-11-23 14:55
请看一下原贴中的截图,python库取回的结果不完整,报文被截断了

我没有httpx库,用requests库爬下来保存文件看,数据全的。
import requests


def main():
    url = "https://ecology.chinauos.com/adaptidentification/uos/knowledge/everyoneget?parent=%E7%B3%BB%E7%BB%9F%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98&type=%E5%85%B6%E4%BB%96%E7%B3%BB%E7%BB%9F%E9%97%AE%E9%A2%98&"
    headers = {'user-agent': 'firefox'}
    r = requests.get(url, headers=headers)
    with open('r.txt', 'w', encoding='utf-8') as f:
      f.write(r.text)


if __name__ == '__main__':
    main()


你把你用httpx下载的页面保存成文本看看呢,可能显示上会有截取。

过去的云雾 发表于 2021-11-25 17:07:59

suchocolate 发表于 2021-11-23 15:25
我没有httpx库,用requests库爬下来保存文件看,数据全的。

你把你用httpx下载的页面保存成文本看看呢 ...

可以获取到,谢谢
页: [1]
查看完整版本: python爬虫爬取知识库,json报文无法完整获取