鱼C论坛

 找回密码
 立即注册
查看: 2674|回复: 8

微博爬虫问题

[复制链接]
发表于 2018-11-2 16:56:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 康小泡 于 2018-11-2 18:33 编辑

做一个爬微博的
  1. from urllib.parse import urlencode
  2. import requests
  3. base_url = 'https://m.weibo.cn/qpi/container/getIndex?'

  4. headers = {
  5.     'Host':'m.weibo.cn',
  6.     'Referer':'https://m.weibo.cn/u/2830678474',
  7.     'User-Agent':'Mozilla/5.0(Macintosh; Intel Mac OS X 10_12_3) AppleWebkit/537.36(KHTML, like Gecko)'
  8.                  'Chrome/58.0.3029.110 Safari/537.36',
  9.     'X-Requested-With': 'XMLHTTpRequest',
  10. }
  11. def get_page(page):
  12.     params ={
  13.         'type':'uid',
  14.         'value':'2830678474',
  15.         'containerid':'1076032830678474',
  16.         'page':page
  17.     }
  18.     url = base_url + urlencode(params)
  19.     try:
  20.         response = requests.get(url, headers=headers)
  21.         if response.status_code == 200:
  22.             return response.json()
  23.     except requests.ConnectionError as e:
  24.         print('Error', e.args)

  25. from pyquery import PyQuery as pq

  26. def parse_page(json):
  27.     if json:
  28.         items = json.get('data').get('cards')
  29.         for item in items:
  30.             item = item.get('mblog')
  31.             weibo = {}
  32.             weibo['id'] = item.get('id')
  33.             weibo['text'] = pq(item.get('text')).text()
  34.             weibo['attitudes'] = item.get('attitudes_count')
  35.             weibo['comments'] = item.get('comments_count')
  36.             weibo['reposts'] = item.get('reposts_count')
  37.             yield weibo
  38. if __name__ == '__main__':
  39.     for page in range(1,11):
  40.         json = get_page(page)
  41.         results = parse_page(json)
  42.         for result in results:
  43.             print(result)
  44. from pymongo import MongoClinent

  45. client = MongoClinent()
  46. db = client['weibo']
  47. collection = db['weibo']

  48. def save_to_mongo(result):
  49.     if collection.insert(result):
  50.         print('Saved to Mongo')
复制代码

——————————————————————————————————
Traceback (most recent call last):
  File "D:/learn/pycharm/exercise/微博.py", line 45, in <module>
    for result in results:
  File "D:/learn/pycharm/exercise/微博.py", line 31, in parse_page
    items = json.get('data').get('cards')
AttributeError: 'NoneType' object has no attribute 'get'
这是要怎么修改啊新手求助谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-11-2 17:04:22 | 显示全部楼层
有点强迫症哈,希望以后发代码的时候用专用的代码格式。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-2 17:28:10 | 显示全部楼层
这里写错了
  1. items = json.get('data').get('cards')
复制代码

应该写成(我没记错的话)
  1. items = json.get(['data']['cards'])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-2 18:41:02 | 显示全部楼层
json等于了NoneType,
  1. if json:
  2.     xxxx
复制代码

改成
  1. if json  is not   None:
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-5 16:07:16 | 显示全部楼层
wongyusing 发表于 2018-11-2 17:28
这里写错了
应该写成(我没记错的话)

不好意思排版确实有点问题哈哈哈哈
这个好像也不对
Traceback (most recent call last):
  File "D:/learn/pycharm/exercise/微博.py", line 45, in <module>
    for result in results:
  File "D:/learn/pycharm/exercise/微博.py", line 31, in parse_page
    items = json.get(['data']['cards'])
TypeError: list indices must be integers or slices, not str
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-5 16:28:39 | 显示全部楼层
康小泡 发表于 2018-11-2 18:41
json等于了NoneType,

改成

还是没变哈哈哈,不过我感觉这个也不太对
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-5 16:37:34 | 显示全部楼层
华北小野狼 发表于 2018-11-5 16:07
不好意思排版确实有点问题哈哈哈哈
这个好像也不对
Traceback (most recent call last):


你先for一下这个字典的keys()。  
看一下你获取的内容是什么。  
我看了你贴出来的报错信息。  
这里应该是一个列表。  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-6 19:51:29 | 显示全部楼层
wongyusing 发表于 2018-11-5 16:37
你先for一下这个字典的keys()。  
看一下你获取的内容是什么。  
我看了你贴出来的报错信息。  

嗯嗯我知道了是这个微博API改了,谢谢老哥,麻烦了哈哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 23:48:22 | 显示全部楼层
你好这个是爬微博什么的鸭?我最近想爬超话里的微博诶
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-10 23:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表