python采集新浪熱門微博
作者: 鄭曉 分類: Python 發(fā)布于: 2014-03-05 20:54 瀏覽:8,957 評(píng)論(5)
這是之前學(xué)習(xí)python采集時(shí)的一個(gè)練習(xí)程序,程序基于python3和BeautifulSoup庫。用來抓取新浪微博(熱門微博hot.weibo.com)頁面的信息,包括每條微博的發(fā)布人,微博內(nèi)容和包含的圖片,微博中含有的多張圖片采集為一個(gè)圖片列表。
由于在頁面中沒有發(fā)現(xiàn)比較精確的發(fā)布時(shí)間字段,所以也沒有去弄(目前思路是獲取到它的頁面中的時(shí)間信息,然后做判斷去轉(zhuǎn)換)。這里以熱門笑話的一個(gè)頁面做為采集對(duì)象。
#-*-coding:utf-8 -*-
from bs4 import BeautifulSoup
import urllib.request
#偽造的header
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 5.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36'}
#抓取地址 讀入頁面源文件
fromurl='http://hot.weibo.com/?v=1899&page=2'
r = urllib.request.Request(url=fromurl, headers=headers)
response=urllib.request.urlopen(r)
page=response.read()
#實(shí)例化BS對(duì)象
soup= BeautifulSoup(page)
#定位到微博信息主節(jié)點(diǎn) 頁面中每一條微博是它的子節(jié)點(diǎn)
tags = soup.find_all(name='div', attrs={'class':'WB_detail'})
#遍歷所有子節(jié)點(diǎn)
for tag in tags:
#從子節(jié)點(diǎn)中找到發(fā)布人
sender = tag.find(name='a', attrs={'class':'WB_name S_func1'}).get_text()
#從子節(jié)點(diǎn)中找到微博內(nèi)容
text = tag.find(name='div', attrs={'class':'WB_text'}).get_text()
#查找節(jié)點(diǎn)下的微博圖片
thumbList = tag.find_all(name='img', attrs={'class':'bigcursor'})
img = []
#如果有圖,把所有圖片的地址放到img數(shù)組中
if thumbList:
for t in thumbList:
img.append(t['src'])
print(sender+text)
print(img)
print()
print()
input()
程序運(yùn)行結(jié)果如圖:
本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請注明出處及相應(yīng)鏈接。
本文永久鏈接: http://yjfs.org.cn/python-cai-ji-xin-lang-re-men-wei-bo.html
很不錯(cuò)的思路