本文记录下用来爬虫主要使用的两个库。第一个是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对象,可以看是否成功