python爬虫案例讲解-Python爬虫案例集合
# 服务器返回的类文件对象支持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爬虫案例集合相关推荐
- 视频教程-跟着王进老师学开发Python篇:基础入门案例讲解-Python
跟着王进老师学开发Python篇:基础入门案例讲解 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ¥ ...
- python免费课程讲解-Python快速入门免费课程
天善学院介绍:天善学院是国内最大的BI 产品学习平台,致力于推动国内BI.数据分析.大数据领域的人员学习和发展,课程涵盖国际国内知名BI可视化产品,cognos.tableau.qv等等,课程量丰富. ...
- python免费课程讲解-Python零基础免费入门课程
小白在网上找的其他的免费课程,感觉还是很难,因为他们针对的不是"零基础"的学生,真正的零基础是什么?就是只会上网,接触过电脑,而不是网上其他课程"设定的电脑科班的&quo ...
- 请简述python数据分析流程_简单案例讲解Python数据分析的基本步骤
上篇文章我们初步认识了numpy包和pandas包的基本用法,这篇文章就来讲一下如何利用Python做数据分析. 一.数据分析的基本步骤 1. 明确问题,理解数据 (1)先把问题了解清楚,明确分析背景 ...
- python语言程序设计教程-Python语言程序设计(视频教程)
-- 为什么要学习计算机编程? -- 因为编程是件很有趣的事儿,能启迪思维,还有诗和远方... Python语言,由Guido van Rossum大牛在1990年发明,它是当今世界最受欢迎的计算机编 ...
- python爬虫进阶案例,Python进阶(二十)-Python爬虫实例讲解
#Python进阶(二十)-Python爬虫实例讲解 本篇博文主要讲解Python爬虫实例,重点包括爬虫技术架构,组成爬虫的关键模块:URL管理器.HTML下载器和HTML解析器. ##爬虫简单架构 ...
- Python开发实战案例之网络爬虫(附源码)-张子良-专题视频课程
Python开发实战案例之网络爬虫(附源码)-35人已学习 课程介绍 课程特色: 特色1:案例驱动-围绕两大完整的Python网络爬虫实战开发案例:IT电子书下载网络爬虫和股票交易数据 ...
- Python案例:破译爬虫项目实践活动日期密码
Python案例:破译爬虫项目实践活动日期密码 一.下达编程任务 寒假期间,李铁有幸成为外星人教育Python爬虫项目实践活动的参与者.外星人教育给参加活动的同学都发了一条短信,告知了实践活动日期,但 ...
- python爬虫教程-Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门!
原标题:Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门! Python简直就是万能的,你用Python都做过哪些事? 用网页看各大网站的VIP视频,用python下载? 用Pytho ...
最新文章
- 第五章 Python函数你知多少
- 数据库服务器网页,服务器 数据库 网页前端
- Canvas入门06-线段与像素边界
- c/c++面试试题(一)
- Oracle11完全卸载方法
- android实现页面的跳转
- 思考:日期类型的数据应该用什么样的具体形式存储到数据库?
- 什么是EulerOS
- 小米入局区块链,究竟是为了什么?
- python携程gevent_Python协程介绍以及优缺点 Greentlet和Gevent的使用
- MFC对COM接口编写的支持分析
- 服务器磁盘会影响应用么,想了解服务器磁盘的IO吞吐量,用sqlio 工具会不会对当前服务器有影响...
- 给群联PS3111/inic6081量产工具添加闪存颗粒支持
- 【分享】哪个OS X版本支持哪个Xcode的版本?
- 高速公路联网收费二义性路径识别系统原理及开发
- 软件配置管理中基线(baseline)
- 国际贸易术语解释通则(DEQ 目的港码头交货(……指定目的港))
- mc java送win10_微软针对Windows 10的免费Minecraft赠品在Java播放器的午夜结束
- 微生物增殖java_Java实现微生物增殖
- java计算机毕业设计BS用户小票系统(附源码、数据库)