博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫爬取“吟”的技术博客
阅读量:6887 次
发布时间:2019-06-27

本文共 1518 字,大约阅读时间需要 5 分钟。

     下午事情少,顺便把昨天的爬虫练习下,平时都看磊的技术博哥(干货比较多);就试试先写一个简单的爬虫,后期有机会再完善,做整站和多线程。

1、观察爬取的URL:

    通过观察我们发现,在首页部分包含有文章的标题列表,然后思路就是;通过这一页的url可以获取所有文章标题,再通过标题获取到文章的URL,在通过RUL下载:

    观察这一页的URL为:

    http://dl528888.blog.51cto.com/2382721/p-1:第二页往后类推就是p-2..p-*,这样就很容易把整站都爬下来。

    

2、然后结合BeautifulSoup,分析结构,根据标题的内容往下爬取到连接,然后下载:

代码:

#coding:utf-8#author : xiaoluo#2015.10.10#http://dl528888.blog.51cto.com/2382721/p-1import urllib,urllib2from bs4 import BeautifulSoupclass Spider:    def __init__(self,url):        self.url = url        self.headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6' }    def binglogdict(self,url):        result_dict = {}        req = urllib2.Request(self.url,headers=self.headers)        html = urllib2.urlopen(req)        soup = BeautifulSoup(html)        for i in soup.find_all("h3",attrs={"class":"artTitle"}):            url =  i.a.get("href")            tal =  i.get_text()            result_dict[url]=tal        return result_dict    def downblog(self):        result_dict = self.binglogdict(self.url+'/2382721/p-1')        for k,v in result_dict.items():            url = self.url + k            fname = v.strip('\n') + '.html'            f = open(fname,'w+')            req = urllib2.Request(url,headers=self.headers)            html = urllib2.urlopen(req).read()            f.write(html)            f.close()if __name__ == '__main__':   xiaoluo = Spider('http://dl528888.blog.51cto.com')   xiaoluo.downblog()

运行结果、看到文章以标题的形式下载成了html文件,windows 下打开就是相应博客内容了:

转载地址:http://cstbl.baihongyu.com/

你可能感兴趣的文章
Python 学习笔记 - 线程(线程锁,信标,事件和条件)
查看>>
大数据技术服务商个推获4亿人民币D轮融资
查看>>
Git的详细使用教程
查看>>
iOS实现类似苹果手机原生的锁屏界面(数字密码)
查看>>
[vue] 表单输入格式化,中文输入法异常
查看>>
Observer观察者模式与OCP开放-封闭原则
查看>>
如何搭建高级工程师知识框架?推荐两种方式
查看>>
BAT的医疗春秋大梦
查看>>
Pulsar本地单机(伪)集群 (裸机安装与docker方式安装) 2.2.0
查看>>
利用H5的css3制作动画
查看>>
Android View 事件分发源码分析
查看>>
vue 2.0 - props
查看>>
RustCon Asia 实录 | Rust 在国内某视频网站的应用
查看>>
Vue遇上Analytics
查看>>
修改max_allowed_packet(允许执行的sql最大长度)
查看>>
node js 处理时间分析
查看>>
判断数据库、表和字段是否存在
查看>>
新手安装postgreSQL后无法连接服务器
查看>>
递归和动态规划
查看>>
java实现简单的控制台管理系统
查看>>