python 爬虫入门

1.re模块(正则表达式)

. :匹配任意字符,换行符除外(\n)

* :匹配前一个字符0次或者无限次

?:匹配前一个字符0次或者一次

.*:贪心算法(尽可能的多)

.*?:非贪心算法(匹配到即可,多次提取)

():括号内的数据作为列表返回


re模块的常用方法findall 、Search、Sub

findall:匹配所有符合规律的内容,返回包含结果的列表

Search:匹配并提取第一个符合规律的字符,返回正则表达式对象

Sub:替换符合规律的内容,返回替换后的值


最主要的一个式子就是(.*?) (re.S)使.能够匹配换行符 \d+ 匹配纯数字


import re

a = 'dasfeffasdasdafefgscdxcasfwefdevasfaqfsdfewgws'

b = re.Search('fa(.*?)cd',a)

print b

首次匹配到fa()cd之间的内容程序结束 如果使用re.findall()这找出所有的符合的文本



2.如何获取网页的源码

2.1第一中就是启动浏览器获取网页的源码并保存在某个txt文本中

2.2就是利用requests模块获取网页的源码

import requests

html = requests.get('http://tieba.baidu.com/python')

html.enconding = 'utf-8'

print html.text

这样就获取了网页的源码并且打印了出来

如何安装requests,模块呢,windowsI下 采用pip install requests 命令就可以自动安装该模块

但是 网页的源码并不是这样好获取的,大多数的服务器都存在反爬虫的功能。所以我门要对自己的爬虫进行伪装,首先我们可以调用浏览器获得请求访问的命令request head

我们创建一个列表

head = {‘User-Agent’:‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36’}
html = requests.get('http://www.csdn.net/',headers = head)

html.enconding = 'utf-8'

print  html,text

这样就可以通过伪装实现了对网站源码的获取在配合正则表达式就可以简单的怕缺网页上的内容了.下面举一个小例子简单的爬取百度贴吧的图片

import requests

import re 

url_ = 'http://tieba.baidu.com/f?ie=utf-8&kw=python&fr=search'

head = {'User-Agent':Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}#对我们的爬虫进行伪装

html = requests.get(url,headers=head) #利用requests的get()方法获取源码

html.encoding = 'utf-8'#以utf-8的编码方式显示网页源码

links = re.findall('src="(.*?)">,html.text)#提取我们想要的字符集

for link in links:#利用for循环 将所有的link打印

print link


关于requests模块的2个基本的方法如下,当然也可以咯用help()来查看所有的信息

get:主要是从服务器获取数据

post:向服务器发送数据并获取他的返回

get通过url中的参数来实现的,post通过headers想服务器发送命令

这些主要是应用在单线程爬虫中。


对于多线程爬虫 我们主要使用xpath总之一句话他很简单

xpath存在于lxml库中

pip install lxml

from lxml import etree

selector = etree.HTML(网页源码)

然后

selector.xpath(//)#因为html是树状结构的所以可以用//定位到根节点,/往下寻找,/text()提取文本内容,/@xxx(属性名) 提取属性内容

就可以展现xpath强大的功能(未完待续...)









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值