# -*- 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格式时的编码和提取信息问题
最新推荐文章于 2024-08-07 02:07:05 发布