zl程序教程

您现在的位置是:首页 >  Python

当前栏目

爬虫第一步:python

2023-03-14 22:53:55 时间

关于python

python语言的有点,可想而知,在快速开发领域早已分一杯羹,使用python语言开发我们想要的软件,往往就是事半功倍的效果,废话不多说,我们开始新的一波爬虫干货吧

案例一,爬取网站小说

选择你要爬取的网站

找到你爬取网站的站点地图,分析网页源码,找到匹配的内容,通过Python正则表达式过滤出来

多层递归哪去数据

存储于数据库中

1.分析

  1. 全书网:http://www.quanshu.net/
  2. 全书网站点地图:

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存储,设计两个表,相互关联。