版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yk_0311/article/details/82500973
代码:
# 爬取今日头条的微博
import requests
from pyquery import PyQuery as pq
url = 'https://m.weibo.cn/api/container/getIndex?containerid=2304131618051664_-_WEIBO_SECOND_PROFILE_WEIBO&page_type=03' #
def getJSON(page):
hd = {'User-Agent': 'Mozilla'} # 模拟浏览器进行访问
params = {'page': page}
try:
r = requests.get(url, headers=hd, params=params)
r.raise_for_status()
r.encoding = r.apparent_encoding
# print(r.json()) # 返回json对象
return r.json()
except:
print('------')
def parsePage(json):
if json:
items = json.get('data').get("cards") # 由Network,XHR中检查到是一个列表类型,返回一个列表
for item in items: # 每一个item又是一个字典
item = item.get('mblog') # 字典类型
if item == None:
continue
content = {} # 创建一个字典
content['时间'] = item.get('created_at')
content['内容'] = pq(item.get('text')).text() # 利用pyquery将正文中的HTML标签去掉
content['发布设备'] = item.get('source')
content['获赞数'] = item.get('attitudes_count')
content['评论数'] = item.get('comments_count')
yield content # yield关键字,表明这个函数是一个generator,直接使用for循环来迭代
def main():
for i in range(1, 3): # 爬取第一页,第二页的内容
r = getJSON(i)
results = parsePage(r)
for result in results:
print(result)
main()
yield关键字的声明表明这个函数是一个generator