# -*- coding: utf-8 -*-
import json
import requests
from bs4 import BeautifulSoup
'''
之前一直困惑的几点:
1.如何将response中返回的Unicode编码文字变成utf-8编码?
--用json.loads()方法,返回一个dict类型元素
2.用了json.loads(),如何提取其中对自己有用的内容(比如a标签中的title)?
--先提取出json.loads()中的HTML内容,再加一个假的头部和尾部,构造成beautifulSoup能解析的形式,再用其提取。
3.beautifulSoup可以提取,那scrapy中的response.css()是否也能提取?
--应该不能,因为这个response为HTTP.XX对象,而构造出来的HTML内容应该是个字符串.果然,报错:'str' object has no attribute 'css'
4.所以json.loads()方法完了以后只能用beautifulSoup提取HTML内容?
--17.11.27未解......
'''
#通过requests获取网页的内容
u = requests.get('http://www.mafengwo.cn/ajax/router.php?sAct=KMdd_StructWebAjax%7CGetPoisByTag&iMddid=10088&iTagId=0&iPage=2')
#根据返回json的结构,提取出其中的HTML内容,并将其编成utf-8格式
content = json.loads(u.content.decode("utf-8"))["data"]["list"]
#加一个伪头部,构造层beautifulSoup能够解析的格式
soup = BeautifulSoup("<html><head></head><body>" + content + "</body></html>","lxml")
for name in soup.find_all('a'):
print(name.get('title'))
request返回json格式时的编码和提取信息问题
最新推荐文章于 2025-07-04 16:59:50 发布
本文介绍了一种从网页获取数据并利用JSON及BeautifulSoup解析的方法。具体步骤包括:通过requests库获取网页内容,使用JSON处理返回的数据,转换为UTF-8编码,最后通过构造伪HTML结构让BeautifulSoup能够解析并提取所需信息。

2273

被折叠的 条评论
为什么被折叠?



