1. 程式人生 > >使用python做微博爬蟲遇到的問題(1)

使用python做微博爬蟲遇到的問題(1)

使用的是python 2.7

python裝不了requests:

百度上的大致意思是我的電腦的使用者名稱是中文,python不支援中文
解決辦法是在python檔案路徑下(我的是C:\Python27)的Lib\site-packages內新建一個名為“sitecustomize.py”的檔案,檔案裡寫入:

import sys 
sys.setdefaultencoding('gbk')

儲存即可

‘NoneType’ object is not iterable錯誤

出現這個原因是有個變量出現了none值,比如:

File "XXXXXXXXX.py"
, line 33, in main for card in list_cards: TypeError: 'NoneType' object is not iterable

這裡是因為list_cards是none,所以要追查list_cards的來源,這裡我用到了debug
如何使用可檢視:Python如何用自帶的IDLE進行除錯DEBUG

查到了獲取微博使用者主頁的某條微博內容是有兩層的(data和cards):

然後通過開發者工具檢視也是如此:
這裡寫圖片描述

然後將原來程式碼:

list_cards = ob_json.get('cards')

修改程式碼為

# _*_ coding:utf-8 _*_
from lxml import html import requests import json import re class Tool: removeImg = re.compile('<img.*?>| {1,7}|&nbsp;') removeAddr = re.compile('<a.*?>|</a>') replaceLine = re.compile('<tr>|<div>|</div>|</p>') removeTag = re.compile('<.*?>'
) #self是例項方法 cls是類方法 @classmethod def replace(cls,x): x=re.sub(cls.removeImg,'',x) x=re.sub(cls.removeAddr,'',x) x=re.sub(cls.replaceLine,'',x) x=re.sub(cls.removeTag,'',x) return x.strip() #去掉多餘的空格 class Weibo(object): def get_weibo(self,id,page): url = 'https://m.weibo.cn/api/container/getIndex?uid={}&type=uid&value={}&containerid=107603{}&page={}'.format(id,id,id,page) response = requests.get(url) ob_json = json.loads(response.text) list_cards = ob_json.get('data').get('cards') return list_cards def get_comments(self,id,page): url = 'https://m.weibo.cn/api/comments/show?id={}&page={}'.format(id,page) response = requests.get(url) ob_json = json.loads(response.text) list_comments = ob_json.get('data').get('hot_data') return list_comments def main(self,uid,page): list_cards = self.get_weibo(uid,page) if list_cards != None: for card in list_cards: if card.get('card_type')==9: id=card.get('mblog').get('id') text=card.get('mblog').get('text') text = Tool.replace(text) print '******' print u'微博:'+text+'\n' list_comments = weibo.get_comments(id,1) count_hotcomments =1 for comment in list_comments: created_at = comment.get('created_at') like_counts = comment.get('like_counts') source = comment.get('source') text = comment.get('text') tree = html.fromstring(text) text = tree.xpath('string(.)')#用string函式過濾多餘標籤 name_user = comment.get('user').get('screen_name') if source =='': source = u'未知' print str(count_hotcomments),':**',name_user+u' 時間'+created_at+u' 點贊'+str(like_counts)+u' 來源'+source print text+'\n' count_hotcomments+=1 print '=============' if __name__ == '__main__': weibo=Weibo() weibo.main('1192329374',1)

相關推薦

使用python爬蟲遇到的問題1

使用的是python 2.7 python裝不了requests: 百度上的大致意思是我的電腦的使用者名稱是中文,python不支援中文 解決辦法是在python檔案路徑下(我的是C:\Python27)的Lib\site-packages內新

Python爬蟲學習1

數據 bin des fin load 寫入 all pytho urlopen 接觸python不久,也在慕課網學習了一些python相關基礎,對於爬蟲初步認為是依靠一系列正則獲取目標內容數據 於是參照著慕課網上的教學視頻,完成了我的第一個python爬蟲,雞凍 >

Python爬蟲-速度1

Python爬蟲-速度(1) 文章目錄 Python爬蟲-速度(1) 前言 網頁分析 介面設計 執行效果 018.9.16 Python爬蟲-速度(2) Python爬蟲-速度(3) 前言

python---爬蟲51job1

這學期學的python,老師每次在上課前會佈置作業,因此再次做下梳理,鞏固知識點 ①使用python程式設計實現上述過程(訪問https://www.51job.com/,在搜尋框輸入關鍵字:python java,用右邊的加號選擇北京、上海、廣州、深圳四個城市),不需要使

$python爬蟲系列1——一個簡單的爬蟲實例

name 響應 -s 鏈接 實例 blog itl 匹配 列表 本文主要實現一個簡單的爬蟲,目的是從一個百度貼吧頁面下載圖片。 1. 概述 本文主要實現一個簡單的爬蟲,目的是從一個百度貼吧頁面下載圖片。下載圖片的步驟如下: 獲取網頁html文本內容; 分析html中圖

$python爬蟲系列1——一個簡單的爬蟲例項

  本文主要實現一個簡單的爬蟲,目的是從一個百度貼吧頁面下載圖片。 1. 概述 本文主要實現一個簡單的爬蟲,目的是從一個百度貼吧頁面下載圖片。下載圖片的步驟如下: 獲取網頁html文字內容; 分析html中圖片的html標籤特徵,用正則解析出所有的

python爬蟲示例1---urlretrieve() 函式使用

下面我們再來看看 urllib 模組提供的 urlretrieve() 函式。urlretrieve() 方法直接將遠端資料下載到本地。 1 >>> help(urllib.urlretrieve)

新浪爬蟲分享一天可抓取 1300 萬條資料

爬蟲功能: 此專案和QQ空間爬蟲類似,主要爬取新浪微博使用者的個人資訊、微博資訊、粉絲和關注(詳細見此)。 程式碼獲取新浪微博Cookie進行登入,可通過多賬號登入來防止新浪的反扒(用來登入的賬號可從淘寶購買,一塊錢七個)。 專案爬的是新浪微

Python下用Scrapy和MongoDB構建爬蟲系統1

這篇文章將根據真實的兼職需求編寫一個爬蟲,使用者想要一個Python程式從Stack Overflow抓取資料,獲取新的問題(問題標題和URL)。抓取的資料應當存入MongoDB。值得注意的是,Stack Overflow已經提供了可用於讀取同樣資料的API。但是使用者想要一個

Python爬蟲例項1-爬取一張貓的照片

程式設計這種實用性的工程性語言,光看書、背概念是完全刻舟求劍;learning with doing才是最快速的學習方法。我打算將自己學習爬蟲的週期,總結之後寫在CSDN上;通過自己感覺非常經典的例項,來表達爬蟲的知識點。話不多說,上一篇描述了爬蟲的原理之後,這一篇搞第一個例

python爬蟲系列1:使用python3和正則表示式獲取貓眼電影排行榜資料

簡述 這次打算寫一個爬蟲系列,一邊也想好好總結鞏固學習的知識,一邊做總結筆記,方便以後回憶。這次我們使用Python3和正則表示式來爬取一個簡單html頁面資訊,就從貓眼電影的排行榜單開始吧。如果讀到這篇文章的是位大神,期望您能不吝賜教,指正錯誤,如果您是小白,咋們可以一同

Python爬蟲入門1:綜述

大家好哈,最近博主在學習Python,學習期間也遇到一些問題,獲得了一些經驗,在此將自己的學習系統地整理下來,如果大家有興趣學習爬蟲的話,可以將這些文章作為參考,也歡迎大家一共分享學習經驗。 Python版本:2.7,Python 3請另尋其他博文。 首先爬蟲是什麼?

Python爬蟲實戰1——百度貼吧抓取帖子並儲存內容和圖片

最近在網上看了很多的爬蟲指令碼,寫的參差不齊,但是其中有很多寫的非常的優秀,程式碼質量很高,規範性也很好,很具有代表性,非常值得我們去學習!~ 寫好一個python爬蟲需要有以下幾個必備條件: 1、足夠好的程式碼規範(等號前後加空格、逗號後加空格等等),結構性封裝性好,重

7. python 字符串格式化方法1

cal rda 讀取 osi body err onf apt -s 7. python 字符串格式化方法(1) 承接上一章節,我們這一節來說說字符串格式化的另一種方法,就是調用format() >>> template=‘{0},{1} and {2

全程模擬新浪登錄2015

star php utf 版本 get lag spa ckey phoenix 非常久之前就了解過模擬登錄的過程。近期對python用的比較多,想來練練手,就想實現

【AI基礎】python:openCV——處理鼠標事件1

python:opencv 處理鼠標 一、用戶通過鼠標對圖像視窗最常見的操作有: 左鍵單擊按下 左鍵單擊擡起 左鍵按下拖動 鼠標指針位置移動 二、單次單擊操作響應事件及順序 Opencv中setMouseCallback()創建了一個鼠標回調函數,每次在圖像上單擊鼠標左鍵再擡起的過程,

【AI基礎】python:openCV——圖像算術運算1

圖像算術運算圖像算術運算 1.圖像加法使用cv2.add()將兩幅圖像進行加法運算,也可以直接使用numpy,res=img1+img2.兩幅圖像的大小,類型必須一致,或者第二個圖像可以是一個簡單的標量值。openCV的加法是一種飽和操作,而numpy的加法是一種模操作。OpenCV的結果會更好 import

Python第三周 學習筆記1

學習筆記;內建函數;字典;列表解析式字典 key-value鍵值對的數據的集合 可變的、無序的、key不重復 初始化: d = dict() d = {} d = dict(**kwargs) 如:d = dict(a=1,b=2) dict(iterable, **kwarg) 使用可叠代對象和na

Python第五周 學習筆記1

學記筆記高階函數 First Class Object 函數也是對象,可調用的對象 函數可以作為普通變量、參數、返回值等等 數學概念 y=g(f(x)) 在數學和計算機科學中,高階函數應當是至少滿足下面一個條件的函數 接受一個或多個函數作為參數 輸出一個函數 內建高階函數 sorted(itera

Python第六周 學習筆記1

學習筆記文件操作 打開操作 io.open(file, mode=‘r‘, buffering=-1, encoding=None,errors=None, newline=None, closefd=True, opener=None) 返回一個文件對象(流對象)和文件描述符。打開文件失敗,則返回異常