关于python
python语言的有点,可想而知,在快速开发领域早已分一杯羹,使用python语言开发我们想要的软件,往往就是事半功倍的效果,废话不多说,我们开始新的一波爬虫干货吧
案例一,爬取网站小说
选择你要爬取的网站
找到你爬取网站的站点地图,分析网页源码,找到匹配的内容,通过Python正则表达式过滤出来
多层递归哪去数据
存储于数据库中
1.分析
3.通过标题栏发现URL的规则
玄幻魔法:http://www.quanshu.net/map/1.html
武侠修真:http://www.quanshu.net/map/2.html
历史军事:http://www.quanshu.net/map/3.html
....
4.查看源码发现规律
5.使用正则提取出小说的URL以及title
了解无敌正则:(.*?)
6.以此规律往下递归
2.环境及工具准备
工具准备:
1. install python 2.7 or python3.6
2.eclipse+jdk+pydev
3.pycharm
3.编码
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import urllib2
import re
domain = http://www.quanshu.net
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
def getTypeList(pn=1): #获取分类列表的函数
req =urllib2.Request('http://www.quanshu.net/map/%s.html' %pn) #实例将要请求的对象
req.headers = headers #替换所有的头部信息
res = urllib2.urlopen(req) #开始请求
html = res.read().decode('gpk')#decode解码 解码成unicode
reg = r'<a href="(/book/.*?)" target="_blank">(.*?)</a>'
reg =re.compile(reg)
# html = res.read()
return re.findall(reg,html)
def getNovelList(url):
req = urllib2.Request(domain+url)
req.headers = headers
res = urllib2.urlopen(req)
html = res.read().decode('gbk')
reg = r'<li><a href="(.*?)" title=".*?">(.*?)</a></li>'
reg =re.compile(reg)
return re.findall(reg,html)
def getNovelContent(url):
req = urllib2.Request(domain + url)
req.headers = headers
res = urllib2.urlopen(req)
html = res.read().decode('gbk')
reg = r'style5\(\);</script>(.*?)<script type="text/javascript">style6\(\);'
return re.findall(reg,html)[0]
if __name__ == '__name__':
for type in range(1,10):
for url,title in getTypeList(type):
for zurl,ztitle in getNovelList(url):
content = getNovelContent(url.replace('index.html',zurl))
进行到这里,基本上就可以把数据爬取出来,但是如何存储爬取的数据,我们可以通过MYSQL存储,设计两个表,相互关联。