Python爬虫Csdn系列I
来源:互联网 发布:如何练好字 知乎 编辑:程序博客网 时间:2024/05/29 04:27
Python爬虫Csdn系列I
By 白熊花田(http://blog.csdn.net/whiterbear)转载需注明出处,谢谢。
说明:
我会在这个系列介绍如何利用python写一个csdn爬虫,并将给定的Csdn用户的博客的所有文章保存起来。嗯,实用性貌似不是很大,写着玩,这个系列后,会有更好玩的更高级的爬虫出现。
原因:
本来想学cookie的,后来发现爬取csdn的文章伪装成浏览器去访问就行了。
本次目标:
爬取csdn某用户的文章列表。这里以我的blog为例,仅仅打开第一列文章列表,不做任何分析,只是验证可以爬取csdn文章。
失败的例子:
# -*- coding:utf-8 -*-import sysimport urllibimport urllib2reload(sys)sys.setdefaultencoding('utf-8')#给定一个csdn的博客专栏链接url = 'http://blog.csdn.net/sodleave'#尝试打开response = urllib2.urlopen(url)html = response.read()print html
结果:
分析:
访问被拒,因为csdn不允许程序直接访问,所以,我们需要将url请求伪装成浏览器访问。使用chrome的审查元素中的Network或者使用其他的抓包工具,在浏览器地址中键入一个csdn地址,比如http://blog.csdn.net/sodleave,回车,此时查看发出去的get请求(使用chrome可以查看Network响应中的第一栏(名字是sodleave,如果你是输入上面的url的话),右键选择Copy request headers)。这个请求的内容如下:
GET /sodleave HTTP/1.1Host: blog.csdn.netConnection: keep-aliveAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.11 Safari/537.36Accept-Encoding: gzip, deflate, sdchAccept-Language: zh-CN,zh;q=0.8,en;q=0.6Cookie: bdshare….
使用上面的User-Agent信息,就可以伪装成浏览器。不要问我为什么这样有这个信息就行,我只知道,csdn一定会根据这个信息判断请求方是否是浏览器。使用urllib2.Request函数将绑定了header的请求发送出去,我们就可以等待响应了。
代码:
# -*- coding:utf-8 -*-import sysimport urllibimport urllib2from bs4 import BeautifulSoupreload(sys)sys.setdefaultencoding('utf-8')#伪装成浏览器,注意headers必须是一个字典headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36'}#我们指定url并发送请求req = urllib2.Request('http://blog.csdn.net/sodleave', headers=headers)#接着服务端响应来自客户端的请求response = urllib2.urlopen(req) soup = BeautifulSoup(response.read())print soup
结果:
分析:
仅仅是添加了添加了一个头部就可以访问csdn的网页了,那么接下来我们就去获取文章信息吧。
未完待续。
0 0
- Python爬虫Csdn系列I
- python爬虫Pragmatic系列I
- Python爬虫Csdn系列II
- Python爬虫Csdn系列III
- Python爬虫 - 登录csdn
- python 爬虫系列
- python爬虫系列
- Python爬虫系列:1
- python爬虫系列文章
- Python爬虫学习系列
- Python爬虫系列博客
- Python 爬虫系列教程
- Python爬虫系列:开端
- Python爬虫系列教程
- python:爬虫系列-01
- python:爬虫系列-02
- python爬虫系列一
- python爬虫系列二
- 在IOS后台执行
- IBM红宝书下载网站
- 程序设计C 实验三 题目二 距阵相乘(0074)
- PAT BASIC PRACTICE: 1008. 数组元素循环右移问题 (20)
- Linux用户基础
- Python爬虫Csdn系列I
- Underscore.js 入门
- spring(4-2)
- linux的父进程向子进程发kill信号例子以及对子进程的状态进行判断
- Lua中编译执行代码相关的函数以及机制
- List对象排序
- KNN算法实现以及性能测试
- PHP5.4 不支持array_column
- 以最省内存的方式读取本地资源的图片