request返回json格式时的编码和提取信息问题

# -*- 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'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值