1.正则表达式
re.findall返回列表,不需要先进行compile,findall函数中调用了compile
re.search().group(0),找到一个后就不会再找了
re.sub 替换的功能
查找数字re.findall('(/d+)', s)
.* 贪心算法,匹配尽可能多的字符;
.*? 非贪心算法;
() 括号内是需要返回的内容;
. 匹配任意字符,'\n'除外,可以用re.S包括换行符;
? 和前面一样一个或0个字符;
* 和前面一样一个或多个字符.
2)应用举例
1 匹配多段内容
先大再小
2 实现换页
用sub,ps: python 中range包含前一个,不包含后一个(2,3)即为[2]
3)制作文本爬虫,一个简单的例子:将一个网页的html下下来之后,匹配其中的图片的链接,然后将图片down下来
import re
import requests
print (__name__)
f = open('xxxx.html', 'r')
html = f.read()
f.close()
# 匹配图片地址
pic_url = re.findall('img src"(.*?)" class=lessonimg', html, re.S)
i = 0
for each in pic_url:
print ("now downloading:")
pic = requests.get(each)
fp = open("D:\My test\python\test1\pic" + str(i) +'.jpg', 'wb')
fp.write()
fp.close()
i += 1
2.requests的安装和介绍
完美的替代了python的urllib2模块。
我在pycharm import之后发现是可以用的,不知道是pycharm安装了还是之前装过,路径在/python/lib/site-packages/request-2..py3.5.egg/requests/ 也可能是python3.5的特性。
安装方法 1)单文件安装,将文件拷贝到/lib/下 2)多文件安装 ,解压后进入模块文件夹,执行:python setup.py install 3)pip install requests 或者 python -m pip install XXX 4)easy_install ,多用pip
包含大多数python第三方文件的网站: http://www.lfd.uci.edu/~gohlke/pythonlibs/
3.第一个网页爬虫
# -*- coding:utf-8 -*-
import re
import requests
# 获取网站源代码,有的网站限制了只能浏览器访问,需要修改我们访问的headers,在要访问的网页中可以用审查元素找到
# headers = {User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36}
# html = requests.get('http://tieba.baidu.com', headers=headers)
html = requests.get('http://tieba.baidu.com')
image_name = re.findall('img_title">(.*?)</p>', html.text, re.S)
# 将图片的标题打印出来
for each in image_name:
print each
print html.text
4.向网页提交数据
get与post:
get从服务器获取数据;post向服务器提交数据;get通过构造url的参数实现功能;post将数据放在header中
练习网站: http://www.crowdfunder.com,极客学院的视频这个网址还是用post方式进行换页的,现在换成了get的方式,why.....
5.实战-极客学院课程爬虫
将首页的前20页课程的名字,介绍,时间,等级,参加人数 爬取下来