|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最近想把统信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()
复制代码
我没有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下载的页面保存成文本看看呢,可能显示上会有截取。
|
-
|