关于Python网络爬虫实战笔记①
python网络爬虫项目实战笔记①如何下载韩寒的博客文章
python网络爬虫项目实战笔记①如何下载韩寒的博客文章
2. 韩寒Blog文章列表特征
随便选一个文章的超链接,右键按审查元素,可以找到
<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102e7pk.html">一个流传多年的谣言</a>
将找到的超链接地址打开一下,
发现就是所要找的链接地址
因此,文章列表特征就是
<a title=…… href="…….html"
建立一个python文件(文件名:GetHanhan.py),复制一下刚找到的超链接所在地
#coding:utf-8
#<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102e7pk.html">一个流传多年的谣言</a>
由于是中文,还得注明utf-8
3.字符串函数—— find函数
[KANO@kelvin ~]$ python
Python 2.7.10 (default, Sep 24 2015, 17:50:09)
[GCC 5.1.1 20150618 (Red Hat 5.1.1-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> help(str.find)
Help on method_descriptor:
find(...)
S.find(sub [,start [,end]]) -> int
Return the lowest index in S where substring sub is found,
such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Return -1 on failure.
从S里头找sub ,如果找到就返回第一次出现的地方,这个函数还可以指定从字符串的什么地方开始、什么地方结束。
例如:
注:数数从0位开始,因此应该是01234这样数数。
首先先找到特定的字符,如<a title
,缩小范围
#coding:utf-8
#<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102e7pk.html">一个流传多年的谣言</a>
str0='<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102e7pk.html">一个流传多年的谣言</a>'
title=str0.find(r'<a title')
print title
运行一下,
[KANO@kelvin 桌面]$ python GetHanhan.py
0
一下就找到了,<a title
在第1就是了。
如果在<a title
前面加上一些字符试试看,
像这样的,
运行一下,
<a title
是在第15个字符,没错!
在代码后面再加上
#coding:utf-8
#<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102e7pk.html">一个流传多年的谣言</a>
str0='<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102e7pk.html">一个流传多年的谣言</a>'
title=str0.find(r'<a title')
print title
href=str0.find(r'href=')
print href
查找一些href=
,存盘运行
那么http就在href的h所在位置加6个字符。
接下来找到html的位置,在代码后加上
html=str0.find(r'.html')
print html
运行一下,
那么,介于28+6到81+5之间的这些字符串就是我们要寻找的链接地址
试着打印出找到的地址,
url=str0[href:html]
print url
有点不对,再加上迁移位,
url=str0[href+6:html+5]
print url
这下没错了吧~
4.通过浏览器把网页打开——urllib
使用urllib库
#coding:utf-8
#<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102e7pk.html">一个流传多年的谣言</a>
import urllib
str0='<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102e7pk.html">一个流传多年的谣言</a>'
title=str0.find(r'<a title')
print title
href=str0.find(r'href=')
print href
html=str0.find(r'.html')
print html
url=str0[href+6:html+5]
print url
content=urllib.urlopen(url).read()
print content
这篇文章内容就读取下来了
接下来,把读取下来的文件保存文件
先设定文件名,改一下最后两行代码
content=urllib.urlopen(url).read()
# print content
filename=url[-26:]
print filename
把链接地址的后26个字符提取作为文件名
加上
open(filename,'w').write(content)
生成文件
这样就把韩寒首页里面的随便一篇文章下载下来了。
关于Python网络爬虫实战笔记①的更多相关文章
- 关于Python网络爬虫实战笔记③
Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
- python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...
- 《精通python网络爬虫》笔记
<精通python网络爬虫>韦玮 著 目录结构 第一章 什么是网络爬虫 第二章 爬虫技能概览 第三章 爬虫实现原理与实现技术 第四章 Urllib库与URLError异常处理 第五章 正则 ...
- Python网络爬虫实战(一)快速入门
本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...
- python网络爬虫实战之快速入门
本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...
- Python网络爬虫实战:根据天猫胸罩销售数据分析中国女性胸部大小分布
本文实现一个非常有趣的项目,这个项目是关于胸罩销售数据分析的.是网络爬虫和数据分析的综合应用项目.本项目会从天猫抓取胸罩销售数据,并将这些数据保存到SQLite数据库中,然后对数据进行清洗,最后通过S ...
- Python网络爬虫实战入门
一.网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序. 爬虫的基本流程: 发起请求: 通过HTTP库向目标站点发起请求,也就是发送一个Request ...
- python网络爬虫学习笔记(一)Request库
一.Requests库的基本说明 引入Rquests库的代码如下 import requests 库中支持REQUEST, GET, HEAD, POST, PUT, PATCH, DELETE共7个 ...
随机推荐
- ADT Example
Example Data Types: Integer, and Character Example (Integer Data Type) The integer data type can con ...
- Javascript数组中shift()和push(),unshift()和pop()操作方法使用
Javascript为数组专门提供了push和pop()方法,以便实现类似栈的行为.来看下面的例子: var colors=new Array(); //创建一个数组 var count= ...
- AngularJs 常用函数
/** * [intersect 取两个数组的交集] var firstArray = [1,3,5]; var secondArray = [2,5,8]; var result */ .filte ...
- zen-Coding的使用
zen-Coding的使用 zen-Coding的使用需要掌握CSS和HTML相关知识.其实只要对CSS的选择器比较熟悉,就可以得用简短的类似于CSS选择器的代码高效的编写出HTML代码.打开Note ...
- 关于NGINX下开启PHP-FPM 输出PHP错误日志的设置(已解决)
最近在本地搭建的LNMP的开发环境.为了开发的时候不影响前端的正常开发就屏蔽的PHP里面php.ini中的一些错误提示.但是这样一来,就影响到了后端开发的一些问题比如不能及时调试开发中的一些问题. n ...
- QQ在线咨询状态显示不出来怎么办?http://bizapp.qq.com/webpres.htm
- Oracle EBS-SQL (SYS-15):查询表空间2.sql
/*表空间查询*/ SELECT d.status "状态", d.tablespace_name "名称", d.contents "类型" ...
- NOI2011 Day1
NOI2011 Day1 兔农 题目描述:\(fib[1]=fib[2]=1, fib[i]=fib[i-2]+fib[i-1] (i\geq 3)\),若\(fib[i] \equiv 1(mod ...
- GDOI2015酱油记
GDOI2015酱油记 今年的GDOI在北江举行,比赛前一天坐了5小时的车才到,幸好忍住了,没有在车上吐. Day 1 刚到电教楼,看完考室后,第一时间找厕所,结果发现只有一楼有厕所,坑爹我的考室在三 ...
- 哥德尔,图灵和康托尔 part 2 停机问题
图灵著名的停机问题对于软件开发者而已是非常熟悉的.下面简单描述停机问题: 假设给你一个计算机程序的源代码,也给你所有程序要用的数据,文件,硬盘,DVD等等,所有它需要处理的东西.你能告诉我程序最终是否 ...