在python获取网页的代码中添加头信息模拟浏览器

为什么要添加头部信息,因为有时候有些网页会有反爬虫的设置,导致无法获取正常的网页,在这里,在代码的头部添加一个headers信息,模拟成浏览器去访问网页。

没有添加头部信息的代码

import urllib2
url = "http://blog.51cto.com/lsfandlinux/2046467"
file = urllib2.urlopen(url)
html = file.read()
print html

接下来添加头部信息,首先在浏览器打开百度一下,然后检查网页的头部信息,找到User-Agent,这就是我们用来模拟浏览器要用到的信息,把他复制下来。

然后在代码里面添加头部信息的变量存储对应的headers信息,定义的格式为(“User-Agent”,具体信息)。
在代码中添加头部信息的方法有两种:
方法1:使用build_opener()来添加

import urllib2
url = "http://blog.51cto.com/lsfandlinux/2046467"
headers = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36")
opener = urllib2.build_opener()
opener.addheaders = [headers]
file = opener.open(url)
html = file.read()
print html

我们利用opener.open(url)就是打开网页,这个opener就是具有头部信息的操作了。

方法2:利用add_header()来添加

import urllib2
url = "http://blog.51cto.com/lsfandlinux/2046467"
req = urllib2.Request(url)
req.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36")
file = urllib2.urlopen(req)
html = file.read()
print html

该方法是通过urllib2里的Request来创建一个Request对象赋值给变量req,然后使用add_header添加头部信息。

原文地址:http://blog.51cto.com/lsfandlinux/2060824

时间: 2024-10-14 00:42:05

在python获取网页的代码中添加头信息模拟浏览器的相关文章

【转】Python之向日志输出中添加上下文信息

[转]Python之向日志输出中添加上下文信息 除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定信息,如:远程客户端的IP地址和用户名.这里我们来介绍以下几种实现方式: 通过向日志记录函数传递一个extra参数引入上下文信息 使用LoggerAdapters引入上下文信息 使用Filters引入上下文信息 一.通过向日志记录函数传递一个extra参数引入上下文信息 前面我们提到过,可以通过向日

Python获取网页html代码

获取网页html代码: import requests res = requests.get('https://www.cnblogs.com/easyidea/p/10214559.html') res.encoding = 'utf-8' print(res.text) 如果不能正常获取说明你还没有安装 requests库,安装requests方法很简单,Windows电脑打开cmd 输入 pip install requests 回车即可,Macos(苹果电脑)打开终端输入 pip ins

Python之向日志输出中添加上下文信息

除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定信息,如:远程客户端的IP地址和用户名.这里我们来介绍以下几种实现方式: 通过向日志记录函数传递一个extra参数引入上下文信息 使用LoggerAdapters引入上下文信息 使用Filters引入上下文信息 一.通过向日志记录函数传递一个extra参数引入上下文信息 前面我们提到过,可以通过向日志记录函数传递一个extra参数来实现向日志输出

有关利用python获取网页, 以及KDD近几年论文标题与摘要链接

最近一直在看KDD的论文,不过,由于老师并没有什么合理的方向性,所以考虑把kdd中的大部分内容都利用python将所有标题.摘要获取下来. 还有一个原因在于,看acm上的摘要,都只显示了两行,再看多点儿,就需要点击expand,觉得非常不爽,所以就用python脚本把html标签删掉.. 想到的方法自然是通过python利用正则表达式对ACM的KDD网页进行字符串匹配,获得相应的网页字符串,然后将所有html的标签删除(例如<div></div>等), 将这些标签删除之后,就能够得

Ado.Net实体数据模型EF,如何在代码中添加数据库连接密码

在创建EF模型的时候,VS2013提示说“在连接字符串中存储敏感数据可能有安全风险”,于是我选择了在代码中添加,可是如何通过代码添加呢? 我在网上百度了下,没有人说的清楚直观. 假设我们创建了一个名字是“mytest”的实体数据模型,那么在项目中就会生成一个mytest.emdx,我们展开它mytest.emdx -> mytest.Context.tt -> mytest.Context.cs 在这个cs文件中我们能够看到一个构造函数,假设你的数据库名称是mydb,它的类名就是mydbEnt

java代码中添加log4j日志

1.得到记录器 使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息.其语法为: public static Logger getLogger( String name), 通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器.Name一般取本类的名字,比如: static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () ) ; 2.读取配置文件 当获得了日志记录器之后,第

WSDL项目---添加头信息和附件

用于底层协议的SOAP请求是HTTP,可以添加两个自定义HTTP头(例如用于身份验证或会话)和附件. 让我们看一下这两个. 1. 自定义HTTP标头 直接添加自定义HTTP头: 我们已经添加了自定义内容类型头将覆盖标准的内容类型用于SOAP请求(“text / xml;charset = utf - 8”). 发送请求,查看器显示原始的请求 当然你可以根据需要添加任意数量的头信息,可以包含扩展属性值. 相应的响应标签显示了所有HTTP头信息: 2. 附件和内联文件 SoapUI支持以下技术处理文

Zuul网关过滤器中转发头信息不起作用

大家应该都知道在做Zuul网关过滤的时候,如果不在网关过滤时转发头信息,经过网关时头信息就会丢失. 但我用 addZuulRequestHeader转发头信息时,却不起作用,在子服务的controller取不到头信息的内容,代码如下: 1.引入依赖 1 <dependencies> 2 <dependency> 3 <groupId>org.springframework.cloud</groupId> 4 <artifactId>spring-

Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding

户端(PC浏览器或者手机浏览器)在接受到Tomcat的响应的时候,头信息通常都会带上Content-Length ,一般情况下客户端会在接受完Content-Length长度的数据之后才会开始解析.而在Tomcat上,页面处理过程中会将需要out.print的数据都放在缓存中,然后一次性的返回给客户端. 另外一种情况就是头信息中不存在Content-Length ,取而代之的是Tansfer-Encoding:chunked ,这个头信息的的意思是response的内容会被Tomcat分成一块一