本文記錄下用來爬蟲主要使用的兩個庫。第一個是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對象,可以看是否成功