# 服务器返回的类文件对象支持Python文件对象的操作方法

# read()方法就是读取文件里的全部内容,返回字符串

html = response.read()

# 打印响应内容

print(html)

我们已经拿到百度的首页了,但是目前出现了第一个问题就是,当你使用urllib2去访问的时候,它的User-Agent是Python-urllib/3.6 (user-agent决定用户的浏览器)

我们需要稍微伪装下,要不然第一步就会被反爬虫发现

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import urllib.request

# urllib2 的User-Agent: Python-urllib/2.7

# User-Agent 爬虫和反爬虫的第一步

ua_headers = {

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"

}

# 通过urllib.request.Request() 方法构造一个请求对象

request = urllib.request.Request("http://www.baidu.com/", headers = ua_headers)

# 向指定的url地址发送请求,并返回服务器响应的类文件对象

# urllib.request.urlopen()参数即可以是字符串也可以是对象

response = urllib.request.urlopen(request)

# 服务器返回的类文件对象支持Python文件对象的操作方法

# read()方法就是读取文件里的全部内容,返回字符串

html = response.read()

# 返回 HTTP的响应码,成功返回200,4服务器页面出错,5服务器问题

print(response.getcode())

# 返回 返回实际数据的实际URL,防止重定向问题

print(response.geturl())

# 返回 服务器响应的HTTP报头

print(response.info())

# 打印响应内容

#print(html)

小编推荐一个学Python的学习q-u n 227+435+450,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!内有开发工具,很多干货和技术资料分享!希望新手少走弯路。

爬取百度贴吧

在url后面直接拼接参数,这种请求方式为get请求

在url后面直接拼接参数,这种请求方式为get请求

#!/usr/bin/python

#coding:utf-8

from urllib import request,parse

defloadPage(fullUrl,filename):

"""

作用:根据url发送请求,获取服务器响应文件

url: 需要爬取的url地址

filename : 处理的文件名

"""

print('正在下载' + filename)

headers = {"User_Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"}

# 构造请求对象

request1 = request.Request(fullUrl,headers = headers);

return request.urlopen(request1).read()

defwirtePage(html,filename):

"""

作用:将html内容写入到本地

html:服务器相应的文件内容

"""

print('正在保存' + filename)

#文件写入

with open(filename,'w') as f:

# 此时打印的html伪bytes格式的,f.write()参数需要字符串

f.write(html.decode(encoding='utf-8'))

print ('-' * 30)

deftiebaSpider(url,beginPage,endPage):

for page in range(beginPage,endPage+1):

pn = (page-1) * 50

filename = "第" + str(page) +'页.html'

fullUrl = url +'&pn='+str(pn)

# 发起请求

html = loadPage(fullUrl,filename)

print(html)

# 写网页

wirtePage(html,filename)

if __name__ == '__main__':

kw = input('请输入爬去的贴吧名:')

beginPage = int(input('请输入起始页:'))

endPage = int(input('请输入结束页'))

url = 'http://tieba.baidu.com/f?'

key = parse.urlencode({"kw":kw})

fullUrl = url + key

tiebaSpider(fullUrl,beginPage,endPage)

通过POST请求到有道翻译

有些网站的查询传参不是直接在URL上面拼接而且通过post form data进行,这个时候传递就要模拟post请求

有些网站的查询传参不是直接在URL上面拼接而且通过post form data进行,这个时候传递就要模拟post请求

from urllib import request,parse

# 通过抓包的方式获取的url,并不是浏览器上显示的url

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

# 完整的headers

headers = {

"Accept" : "application/json, text/java, */*; q=0.01",

"X-Requested-With" : "",

"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",

"Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8",

}

# 用户接口输入

key = input("请输入需要翻译的文字:")

# 发送到web服务器的表单数据

formdata = {

"from" : "AUTO",

"to" : "AUTO",

"smartresult" : "dict",

"client" : "fanyideskweb",

"type" : "AUTO",

"i" : key,

"doctype" : "json",

"keyfrom" : "fanyi.web",

"ue" : "UTF-8",

"version":"2.1",

"action" : "FY_BY_CLICKBUTTON",

"typoResult" : "false"

}

# 经过urlencode转码

data = parse.urlencode(formdata).encode('utf-8')

print(data)

# 如果Request()方法里的data参数有值,那么这个请求就是POST

# 如果没有,就是Get

request1 = request.Request(url, data = data, headers = headers)

print(request.urlopen(request1).read().decode('utf-8'))

抓取ajax豆瓣电影

有些时候页面上面是空的,内容通过ajax来加载,那么我们爬虫需要关注点就应该到数据源这个位置,ajax加载的页面,数据源一定是json,拿到json也就拿到了数据

有些时候页面上面是空的,内容通过ajax来加载,那么我们爬虫需要关注点就应该到数据源这个位置,ajax加载的页面,数据源一定是json,拿到json也就拿到了数据

from urllib import request, parse

url = "https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action"

headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

formdata = {

"start":"0",

"limit":"20"

}

data = parse.urlencode(formdata).encode('utf-8')

request1 = request.Request(url, data = data, headers = headers)

print(request.urlopen(request1).read().decode('utf-8'))

python爬虫案例讲解-Python爬虫案例集合相关推荐

  1. 视频教程-跟着王进老师学开发Python篇:基础入门案例讲解-Python

    跟着王进老师学开发Python篇:基础入门案例讲解 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ¥ ...

  2. python免费课程讲解-Python快速入门免费课程

    天善学院介绍:天善学院是国内最大的BI 产品学习平台,致力于推动国内BI.数据分析.大数据领域的人员学习和发展,课程涵盖国际国内知名BI可视化产品,cognos.tableau.qv等等,课程量丰富. ...

  3. python免费课程讲解-Python零基础免费入门课程

    小白在网上找的其他的免费课程,感觉还是很难,因为他们针对的不是"零基础"的学生,真正的零基础是什么?就是只会上网,接触过电脑,而不是网上其他课程"设定的电脑科班的&quo ...

  4. 请简述python数据分析流程_简单案例讲解Python数据分析的基本步骤

    上篇文章我们初步认识了numpy包和pandas包的基本用法,这篇文章就来讲一下如何利用Python做数据分析. 一.数据分析的基本步骤 1. 明确问题,理解数据 (1)先把问题了解清楚,明确分析背景 ...

  5. python语言程序设计教程-Python语言程序设计(视频教程)

    -- 为什么要学习计算机编程? -- 因为编程是件很有趣的事儿,能启迪思维,还有诗和远方... Python语言,由Guido van Rossum大牛在1990年发明,它是当今世界最受欢迎的计算机编 ...

  6. python爬虫进阶案例,Python进阶(二十)-Python爬虫实例讲解

    #Python进阶(二十)-Python爬虫实例讲解 本篇博文主要讲解Python爬虫实例,重点包括爬虫技术架构,组成爬虫的关键模块:URL管理器.HTML下载器和HTML解析器. ##爬虫简单架构 ...

  7. Python开发实战案例之网络爬虫(附源码)-张子良-专题视频课程

    Python开发实战案例之网络爬虫(附源码)-35人已学习 课程介绍         课程特色: 特色1:案例驱动-围绕两大完整的Python网络爬虫实战开发案例:IT电子书下载网络爬虫和股票交易数据 ...

  8. Python案例:破译爬虫项目实践活动日期密码

    Python案例:破译爬虫项目实践活动日期密码 一.下达编程任务 寒假期间,李铁有幸成为外星人教育Python爬虫项目实践活动的参与者.外星人教育给参加活动的同学都发了一条短信,告知了实践活动日期,但 ...

  9. python爬虫教程-Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门!

    原标题:Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门! Python简直就是万能的,你用Python都做过哪些事? 用网页看各大网站的VIP视频,用python下载? 用Pytho ...

最新文章

  1. 第五章 Python函数你知多少
  2. 数据库服务器网页,服务器 数据库 网页前端
  3. Canvas入门06-线段与像素边界
  4. c/c++面试试题(一)
  5. Oracle11完全卸载方法
  6. android实现页面的跳转
  7. 思考:日期类型的数据应该用什么样的具体形式存储到数据库?
  8. 什么是EulerOS
  9. 小米入局区块链,究竟是为了什么?
  10. python携程gevent_Python协程介绍以及优缺点 Greentlet和Gevent的使用
  11. MFC对COM接口编写的支持分析
  12. 服务器磁盘会影响应用么,想了解服务器磁盘的IO吞吐量,用sqlio 工具会不会对当前服务器有影响...
  13. 给群联PS3111/inic6081量产工具添加闪存颗粒支持
  14. 【分享】哪个OS X版本支持哪个Xcode的版本?
  15. 高速公路联网收费二义性路径识别系统原理及开发
  16. 软件配置管理中基线(baseline)
  17. 国际贸易术语解释通则(DEQ 目的港码头交货(……指定目的港))
  18. mc java送win10_微软针对Windows 10的免费Minecraft赠品在Java播放器的午夜结束
  19. 微生物增殖java_Java实现微生物增殖
  20. java计算机毕业设计BS用户小票系统(附源码、数据库)

热门文章

  1. mysql 查询 插入
  2. BZOJ1688|二进制枚举子集| 状态压缩DP
  3. 【BZOJ3745】Norma(CDQ分治)
  4. Educational Codeforces Round 21 E. Selling Souvenirs(背包)
  5. 11.28 软件工程概论psp
  6. vue-cli 各文件夹的用途
  7. Python max() 函数
  8. 8-7-Exercise
  9. keil中使用Astyle格式化你的代码的方法-keil4 keil5通用
  10. java基础 4 继承(1)访问权限与作用域