Python 爬蟲—— requests BeautifulSoup


本文記錄下用來爬蟲主要使用的兩個庫。第一個是requests,用這個庫能很方便的下載網頁,不用標准庫里面各種urllib;第二個BeautifulSoup用來解析網頁,不然自己用正則的話很煩。

requests使用,1直接使用庫內提供的get、post等函數,在比簡單的情況下使用,2利用session,session能保存cookiees信息,方便的自定義request header,可以進行登陸操作。

BeautifulSoup使用,先將requests得到的html生成BeautifulSoup對象,然后進行解析,可以用select進行css選擇器操作,然后用get、getText等獲取信息。

下面是一個登錄博客園發布閃存的例子

#! python
# coding=UTF-8

from requests import session #__version__ = 2.3.0 這里直接使用session,因為要先登陸 
from bs4 import BeautifulSoup #__version__ = 4.3.2


s = session() #創建一個session對象
r = s.get('http://passport.cnblogs.com/login.aspx') #該頁面進行登錄,先獲取一些信息
bs = BeautifulSoup(r.text) #解析獲取的網頁
__VIEWSTATE = bs.select('#__VIEWSTATE')[0].get('value') #
__EVENTVALIDATION = bs.select('#__EVENTVALIDATION')[0].get('value') #


# post登陸時的信息,把用戶名和密碼改成自己的
data = {'tbUserName':'*', 'tbPassword':'*',\
'chkRemember':'on', 'txtReturnUrl':'http://i.cnblogs.com',\
'__VIEWSTATE':__VIEWSTATE, '__EVENTVALIDATION':__EVENTVALIDATION,\
'btnLogin':u'登錄', 
}
s.post('http://passport.cnblogs.com/login.aspx', data) #登錄

messages = ['hello world', 'hello cnblogs']

for message in messages:
    data = {'content':message, 'publicFlag': '1'}
    r = s.post('http://home.cnblogs.com/ajax/ing/Publish', data) # 發送閃存
    print r.json() #返回一個json對象,可以看是否成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM