前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫第一步:python

爬虫第一步:python

作者头像
公众号: 云原生生态圈
发布2021-11-15 18:25:29
2590
发布2021-11-15 18:25:29
举报
文章被收录于专栏:云原生生态圈云原生生态圈

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生生态圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档