python爬虫

0x01、前提

pip类似RedHat里面的yum,安装Python包非常方便。建议大家使用pip安装python包,这样更加方便快捷的安装查看删除更新python包
安装pip:
1、下载pip安装包:https://pypi.python.org/pypi/pip#downloads
2、将解压完的安装包放到一个文件夹,用cmd命令进入该文件夹,输入:python setup.py install
3、配置环境变量,在path最后添加C:\Python34\Scripts;
4、这样我们的pip就安装成功了


5、基本使用方法

$ pip install PackageName #安装套件
$ pip install -U PackageName #更新套件
$ pip uninstall PackageName #卸载套件
$ pip search PackageName #搜索套件
$ pip help #显示说明

0x02、python爬虫

爬虫可以抓取网络上的数据,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。大多数python爬虫的需求—定向抓取,结构化解。
Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据,可以很方便地提取出HTML或XML标签中的内容。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。
官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/
安装:pip install beautifulsoup4
pip install lxml

0x03、Beautiful Soup的使用

1、首先我们抓取i春秋社区的代码:

#!/usr/bin/python
# -*-coding = utf-8 -*-

import requests
from bs4 import BeautifulSoup

url = 'http://bbs.ichunqiu.com/portal.php'

r = requests.get(url=url)
print r.content

这样他的源码就被我们抓取到了

2、使用re模块的re.findall()匹配标题

#!/usr/bin/python
# -*-coding = utf-8 -*-

import requests
from bs4 import BeautifulSoup
import re

url = 'http://bbs.ichunqiu.com/portal.php'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}

r = requests.get(url=url,headers=headers)
bbsnews = re.findall('style="color: #555555;">(.*?)</a>',r.content)

for i in bbsnews:
    print i

3、使用Beautiful Soup的匹配

soup.contents
soup.title 获取标题
soup.find_all(name = ‘x’,attrs = {‘xx’:’内容’}) 正则,x表示标签
正则:soup.find_all(name = ‘x’,attrs ={‘xx’:re.compile(‘’)}) 使用re模块进行匹配
soup.p
soup.a
soup = BeautifulSoup(open(‘index.html’)) 使用本地HTML创建对象

#!/usr/bin/python
# -*-coding = utf-8 -*-

import requests
from bs4 import BeautifulSoup

url = 'http://bbs.ichunqiu.com/portal.php'
r = requests.get(url=url)
soup = BeautifulSoup(r.content,'lxml')

print soup.title.string

#!/usr/bin/python
# -*-coding = utf-8 -*-

import requests
from bs4 import BeautifulSoup

url = 'http://bbs.ichunqiu.com/portal.php'
r = requests.get(url=url)

soup = BeautifulSoup(r.content,'lxml')

bbsnews = soup.find_all(name='a',attrs={'class':'ui_colorG'})
for i in bbsnews:
   print i.stringt

Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

Tag  标签
NavigableString   获取标签内部文字
BeautifulSoup   表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag
Comment  

感觉使用Beautiful Soup比较有意思,快速、方便的进行抓取