Python爬虫基础

  1.获取网页文本

      通过urllib2包,根据url获取网页的html文本内容并返回

#coding:utf-8
import requests, json, time, re, os, sys, time
import urllib2 #设置为utf-8模式
reload(sys)
sys.setdefaultencoding( "utf-8" ) def getHtml(url):
response = urllib2.urlopen(url)
html = response.read()
#可以根据编码格式进行编码
#html = unicode(html,'utf-8')
return html
url = 'https://www.cnblogs.com/'
print getHtml(url)

或者

def getHtml(url):
#使用将urllib2.Request()实例化,需要访问的URL地址则作为Request实例的参数
request = urllib2.Request(url)
#Request对象作为urlopen()方法的参数,发送给服务器并接收响应的类文件对象
response = urllib2.urlopen(request)
#类文件对象支持文件对象操作方法
#如read()方法读取返回文件对象的全部内容并将其转换成字符串格式并赋值给html
html = response.read()
#可以根据编码格式进行编码
#html = unicode(html,'utf-8')
return html url = 'https://www.cnblogs.com/'
print getHtml(url)

再添加ua和超时时间:

def getHtml(url):
#构造ua
ua_header = {"User-Agent":"Mozzila/5.0(compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"}
#url连同headers一起构造Request请求,这个请求将附带IE9.0浏览器的User-Agent
request = urllib2.Request(url,headers=ua_header)
#设置超时时间
response = urllib2.urlopen(request,timeout=60)
html = response.read()
return html url = 'https://www.cnblogs.com/'
print getHtml(url)

添加header属性:

def getHtml(url):
ua = {"User-Agent":"Mozzila/5.0(compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"}
request = urllib2.Request(url)
#也可以通过Request.add_header()添加/修改一个特定的header
request.add_header("Connection","keep-alive")
response = urllib2.urlopen(request)
html = response.read()
#查看响应码
print '相应码为:',response.code
#也可以通过Request.get_header()查看header信息
print "Connection:",request.get_header("Connection")
#或者
print request.get_header(header_name = "Connection")
#print html
return html

添加随机ua

#coding:utf-8
import requests, json, time, re, os, sys, time
import urllib2
import random #设置为utf-8模式
reload(sys)
sys.setdefaultencoding( "utf-8" ) def getHtml(url):
#定义ua池,每次随机取出一个值
ua_list = ["Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv2.0.1) Gecko/20100101 Firefox/4.0.1","Mozilla/5.0 (Windows NT 6.1; rv2.0.1) Gecko/20100101 Firefox/4.0.1","Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11","Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"]
user_agent = random.choice(ua_list)
#print user_agent
request = urllib2.Request(url)
request.add_header("Connection","keep-alive")
request.add_header("User-Agent",user_agent)
response = urllib2.urlopen(request,data=None,timeout=60)
html = response.read()
#print '响应码为:',response.code
#print 'URL:',response.geturl()
#print 'Info:',response.info()

最新文章

  1. response 设置头的类型 (转)
  2. Codeforces Round #260 (Div. 2) C
  3. c#.net防止按F5刷新页面重复提交的方法
  4. jfreechart图表汉字乱码问题解决方案
  5. 一个Win32API Trace Tool的设计与实现
  6. PXE安装windows系统,pxe-e55:ProxyDhcp service did not reply to request on port 4011
  7. 理解R语言gdistance包下的transition函数
  8. 解决MyEclipse中install new software问题
  9. 基于Python实现的死链接自动化检测工具
  10. 在IDEA中将SpringBoot项目打包成jar包的方法
  11. DevExpress控件安装和初次使用图解
  12. Spring DI - 依赖注入
  13. hfs快速搭建HTTP文件服务器
  14. docker - 修改镜像/容器文件或者 "Docker root dir" 的在宿主机上的存储位置
  15. day09作业
  16. HDUOJ----(1031)Design T-Shirt
  17. ceph pg_num 数值计算
  18. C语言字节对齐问题详解(对齐、字节序、网络序等)
  19. Tomcat源码
  20. ReactJS 页面跳转保存当前scrollTop回来时,自动移动到上次浏览器的位置

热门文章

  1. javascript中的类方法、构造方法、原型方法的对比
  2. 并发模型(二)——Master-Worker模式
  3. BeX5 常见问题解决办法
  4. 强大的HTML5开发工具推荐
  5. 页面布局 frameset元素
  6. java StirngStringbufferStringbuild的区别
  7. JQuery实现瀑布流页面
  8. bootstrap设计网站中添加代码高亮插件
  9. linux的deamon后台运行
  10. jq获取table总行数