码迷,mamicode.com
首页 > 编程语言 > 详细

Python爬虫Csdn系列I

时间:2015-04-09 19:51:14      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:爬虫   csdn   博客   python爬虫   urllib2   

Python爬虫Csdn系列I


By 白熊花田(http://blog.csdn.net/whiterbear)


说明:

我会在这个系列介绍如何利用python写一个csdn爬虫,并将给定的Csdn用户的博客的所有文章保存起来。嗯,实用性貌似不是很大,写着玩,这个系列后,会有更好玩的更高级的爬虫出现。

原因:

本来想学cookie的,后来发现爬取csdn的文章伪装成浏览器去访问就行了。

本次目标:

爬取csdn某用户的文章列表。这里以我的blog为例,仅仅打开第一列文章列表,不做任何分析,只是验证可以爬取csdn文章。

失败的例子:

# -*- coding:utf-8 -*-
import sys
import urllib
import urllib2

reload(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.1
Host: blog.csdn.net
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.11 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: bdshare….

使用上面的User-Agent信息,就可以伪装成浏览器。不要问我为什么这样有这个信息就行,我只知道,csdn一定会根据这个信息判断请求方是否是浏览器。使用urllib2.Request函数将绑定了header的请求发送出去,我们就可以等待响应了。

代码:

# -*- coding:utf-8 -*-
import sys
import urllib
import urllib2
from bs4 import BeautifulSoup

reload(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的网页了,那么接下来我们就去获取文章信息吧。

未完待续。





Python爬虫Csdn系列I

标签:爬虫   csdn   博客   python爬虫   urllib2   

原文地址:http://blog.csdn.net/whiterbear/article/details/44964041

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!