关于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个 ...
随机推荐
- win10安装数据库:[INS-13001]
升级win10系统之后,需要重新安装Oracle,因为在安装Oralce11g时,使用64位的会出现各种不兼容问题,我每次安装都是使用32位的数据库. 在安装时点击setup.exe之后,出现了:[I ...
- C#中关于DBNULL的处理方法
从数据库中获取数据有些会是空值的,这时一不注意就会被坑了…… String.Concat(db.可能为DBNULL的值) 在这种情况下,如果是DBNULL,得到的会是""
- JavaScript中的计时器原理
理解John Resig 在 How JavaScript Timers Work. 原理分析 timer(setInterval,setTimeout)有一个很重要的概念,时间延迟的长短是不稳定的. ...
- php获取文章内容中的全部图片数组
<?php $pattern="/<img.*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/&q ...
- Matlab基础知识
一.常用命令:普通的如cd.ls和linux下一样 clc:清除工作窗口中的所有显示内容 clf:清除图形窗口 whos:列出当前工作空间中所有变量,以及它们的名字.尺寸(比如一个矩阵或数组的行列维数 ...
- QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData
SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...
- iis7.0/8.0rewrite规则
首先在网站 web.config 配置文件的 configuration 节点中加入如下代码: <system.webServer> <rewrite> <rules&g ...
- LeakCanary,检测安卓,java内存泄漏
官方中文API地址:http://www.liaohuqiu.net/cn/posts/leak-canary-read-me/
- 软件测试学习日志————round 1 some questions of two small programs
Below are four faulty programs. Each includes a test case that results in failure. Answer the follow ...
- python退格、方向键无法正常使用解决方法
CentOS 6.5 自带的Python 2.6.6 箭头以及退格键(Backspace)可正常使用: 自定义所安装的Python 2.7.6却发现箭头以及退格键(Backspace)在使用的时候出现 ...