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对象,可以看是否成功
原文地址:https://www.cnblogs.com/wbin91/p/3833725.html