热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python3使用requests包抓取并保存网页源码

转载自:http:blog.csdn.netw93223010articledetails18968081近期的工作学习中使用到了Python,分享一些初学者的心得与君共勉。本节的内容主要

转载自:http://blog.csdn.net/w93223010/article/details/18968081

近期的工作学习中使用到了Python,分享一些初学者的心得与君共勉。

本节的内容主要是如何使用python去获取网页的源代码并存储到本地文件中,希望通过本节可以让你略微了解到python的神奇。

先上代码:

import urllib.request  
def getPage(url):     
    request = urllib.request.Request(url)  
    respOnse= urllib.request.urlopen(request)  
    return response.read().decode("utf-8") 
      
url='http://www.kntpb.com/'  
result=getPage(url)  
print (result) 

1行导入了必要的包

第2至6\5行定义了一个函数,目的是向指定url发送http请求,并将网页的源代码返回

最后把获得的源码进行展示

在命令行执行代码的话,可以看到类似图1-1的一堆html代码,即为成功。


1-1

可以用浏览器访问一下代码中的url,可以看到类似图1-2ebay的网站。(为了逃避中文字符的处理,所以选择了英文的网站)

1-2

而在浏览的网页的空白处单击右键,选择“查看网页源代码”,可以看到类似图1-3的的html源码,实际上与图1-1中是一样的。


1-3


修改一下代码,将获取的html源码写入本地的文件。

[python] view plain copy
  1. import urllib  
  2. import urllib2  
  3. def getPage(url):     
  4.     request = urllib2.Request(url)  
  5.     response = urllib2.urlopen(request)  
  6.     return response.read()  
  7.       
  8. url='http://www.ebay.com/sch/TShirts-/15687/i.html?  
  9. result=getPage(url)  
  10. txt='D:\\result.html'  
  11. f = open(txt,"w+")  
  12. f.write(result)  


1012行进行了文件操作,在D盘创建了result.html文件并将result变量中的内容写入其中。


作为一个购物网站,大部分类型的商品都是分很多页的,接下来继续修改代码,让它能够取出前5页的内容,分别写入5个文件中。

[python] view plain copy
  1. import urllib  
  2. import urllib2  
  3. def getPage(url):     
  4.     request = urllib2.Request(url)  
  5.     response = urllib2.urlopen(request)  
  6.     return response.read()  
  7.       
  8. url='http://www.ebay.com/sch/TShirts-/15687/i.html?  
  9. p=0  
  10. while p<5:  
  11.     print ' =='+str(p+1)+'==start=='  
  12.     result=getPage(url+'&_pgn='+str(p+1))  
  13.     txt='D:\\result'+str(p+1)+'.html'  
  14.     f = open(txt,"w+")  
  15.     f.write(result)  
  16.     print ' =='+str(p+1)+'====end=='  
  17.     p=p+1  
  18. f.close()  

8行修改了url字符串的结尾部分,删除了“&_pgn=1”,并将其作为后面循环的参数

1017行做了一个04的循环(当然你也可以设置成15),其中第11行和16行仅是跟踪代码,用以显示当前读到的页数。第12行的实参将循环变量p组合进去,达到获取不同页html源码的作用。

18行结束文件操作,关闭所用资源。

 

程序在命令行执行后,最后一行显示“==5====end==”,并在D盘生成如图1-4的,文件大小近似的5html文件即为成功。

1-4

==========================================以下是之前的笔记=====================================

这篇文章主要介绍了Python3使用requests包抓取并保存网页源码的方法,实例分析了Python3环境下requests模块的相关使用技巧,需要的朋友可以参考下

本文实例讲述了Python3使用requests包抓取并保存网页源码的方法。分享给大家供大家参考,具体如下:

使用Python 3的requests模块抓取网页源码并保存到文件示例:

import requests
html = requests.get("http://www.baidu.com")
with open('test.txt','w',encoding='utf-8') as f:
f.write(html.text)

这是一个基本的文件保存操作,但这里有几个值得注意的问题:

1.安装requests包,命令行输入pip install requests即可自动安装。很多人推荐使用requests,自带的urllib.request也可以抓取网页源码

2.open方法encoding参数设为utf-8,否则保存的文件会出现乱码。

3.如果直接在cmd中输出抓取的内容,会提示各种编码错误,所以保存到文件查看。

4.with open方法是更好的写法,可以自动操作完毕后释放资源。

另一个例子:

import requests
ff = open('testt.txt','w',encoding='utf-8')
with open('test.txt',encoding="utf-8") as f:
for line in f:
ff.write(line)
ff.close()

这是演示读取一个txt文件,每次读取一行,并保存到另一个txt文件中的示例。

因为在命令行中打印每次读取一行的数据,中文会出现编码错误,所以每次读取一行并保存到另一个文件,这样来测试读取是否正常。(注意open的时候制定encoding编码方式)

转自:小谈博客 http://www.tantengvip.com/2015/05/requests-html/


推荐阅读
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
四川盛地地产顾问有限公司_255
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有