什么是爬虫:网络爬虫(又被称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
1.1环境准备1. JDK1.8 2. IntelliJ IDEA 3. IDEA自带的Maven 4. pom.xml相关依赖1.2 简单爬取网页代码
import urllib.request
url = 'http://www.baidu.com'
response = urllib.request.urlopen(url)
print ('状态码:',response.getcode())
data = response.read()
data = data.decode('utf-8')
print (data)
2、爬虫的使用
2.1 添加date、headers相应属性
date:对数据进行编码
import urllib
import urllib2
url = 'http://www.server.com/login'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'username' : 'cqc', 'password' : 'XXXX' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
page = response.read()
“反盗链”:headers = { ‘User-Agent’ : ‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)’ , ‘Referer’:‘http://www.zhihu.com/articles’ }
作用:对付防盗链,服务器会识别 headers 中的 referer 是不是它自己,如果不是,有的服务器不会响应
import urllib
import urllib2
values = {"username":"1016903103@qq.com","password":"XXXX"}
data = urllib.urlencode(values)
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
request = urllib2.Request(url,data)
response = urllib2.urlopen(request)
print response.read()
2.3 get请求方式
import urllib
import urllib2
values={}
values['username'] = "1016903103@qq.com"
values['password']="XXXX"
data = urllib.urlencode(values)
url = "http://passport.csdn.net/account/login"
geturl = url + "?"+data
request = urllib2.Request(geturl)
response = urllib2.urlopen(request)
print response.read()
2.4 程序添加cookie
含义:cookielib 模块的主要作用是提供可存储 cookie 的对象,以便于与 urllib2 模块配合使用来访问 Internet 资源。cookielib 模块非常强大,我们可以利用本模块的 cookieJar 类的对象来捕获 cookie 并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有 cookieJar、FilecookieJar、MozillacookieJar、LWPcookieJar。 它们的关系:cookieJar —— 派生 ——>FilecookieJar —— 派生 ——->MozillacookieJar 和 LWPcookieJar
获取 cookie 保存到变量:
import urllib2
import cookielib
cookie = cookielib.cookieJar()
handler=urllib2.HTTPcookieProcessor(cookie)
opener = urllib2.build_opener(handler)
response = opener.open('http://www.baidu.com')
for item in cookie:
print 'Name = '+item.name
print 'Value = '+item.value
保存 cookie 到文件
import cookielib
import urllib2
filename = 'cookie.txt'
cookie = cookielib.MozillacookieJar(filename)
handler = urllib2.HTTPcookieProcessor(cookie)
opener = urllib2.build_opener(handler)
response = opener.open("http://www.baidu.com")
cookie.save(ignore_discard=True, ignore_expires=True)
3、正则表达式
3.1 正则表达式语句
import re re.compile(“正则表达式”).findall(“原字符串”)3.2 匹配符
普通字符 正常匹配其中的字符。 n 匹配换行符。 t 匹配制表符。 w 匹配字母、数字、下划线。 W 匹配除了字母、数字、下划线的字符串。字母大写相当于非(个人总结) d 匹配十进制数字 D 匹配除了十进制数字的字符串 s 匹配空白字符 S 匹配非空白字符 [asd213] 匹配中括号中的任意一个字符 [^asd213] 匹配中除了括号中的任意一个字符3.3 特殊字符
. 匹配除换行符 n 之外的任何单字符。
^ 匹配输入字符串的开始位置。
$ 匹配输入字符串的结尾位置。
* 前一个字符出现零次或多次。
+ 前一个字符出现一次或多次。
? 前一个字符出现零次或一次。
{n} 前一个字符恰好出现n次
{n,} 前一个字符至少出现n次
{n,m} 前一个字符至少n次,至多m次
| 指明两项之间的一个选择。
() 标记一个子表达式的开始和结束位置。
3.4 贪婪模式与懒惰模式
*? 懒惰模式//?不代表0或1了 +? 懒惰模式//?不代表0或1了



