使用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}| ')
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---爬蟲51job(1)
這學期學的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) 返回一個文件對象(流對象)和文件描述符。打開文件失敗,則返回異常