Python伪装浏览器爬虫读取网页内容


python

昨天在OSC上看到有段代码,解析HTML相关的,我突然就想到了Python,用Python实现同样功能应该也不难吧,于是我开始试着用Python读取网页内容,不过过程有点纠结。

 

声明:以下代码在Python 3.3中编写调试完成!

 

首先我是这样做的:

import urllib.request
url = "http://www.oschina.net/"
data = urllib.request.urlopen(url).read()
print(data)

 

结果发现不行,OSC加了保护,不止是OSC,CSDN等等很多网站都这样,这就必须要伪装浏览器正常访问了,类似蜘蛛爬虫一样,那么只有给代码加上一个Header,再试试读取HTML。

Chrome如何查看你的浏览器的Header:

Chrome header

一图全解,有木有。

F12打开开发人员工具,其他浏览器也有类似功能,很方便哦。

这里我们只需要Request Headers中的User-Agent就可以了。

 

各种纠结呀,网上许多代码都是Python2的,我用的3.3,import很多都不一样了,没办法只有翻Python的官方文档,全英文有点苦,还好我的Chrome可以随时翻译,减轻负担呀。

在官方文档3.3中找到了urllib.request的文档:docs.python.org/3/library/urllib.request.html

在Examples中找到了一个addheaders的方法,试了一下果然能行,下面就是代码。

'''
Created on 2013-1-27
@author: isaced
''' 
import urllib.request

url = "http://www.oschina.net/"
headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')

opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url).read()

print(data)

到这里就能输出页面的HTML了,也可以直接保存成本地HTML文件,打开正常。

另外对于这编码问题还是有点迷茫。

 

另收藏一条很有用的语句,type(),类似于C语言中的typeof(),可以print出来直接查看数据类型,很方便!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值