爬虫入门知识+简单案例《python网络爬虫从入门到实践》静态网页抓取

文章目录

  • 爬虫入门知识+简单案例《python网络爬虫从入门到实践》静态网页抓取
  • **安装Requests**
  • **获取响应内容**
    • **案例1:第一个爬虫**
  • **定制Requests**
    • **传递URL参数params:**
    • **定制请求头headers**:
    • **发送post请求**
    • **设置超时timeout**
      • **案例2:建议网页采集器**
      • **案例3:破解百度翻译**
      • **案例4:豆瓣电影排行榜前250进行解析**

安装Requests

打开windows的cmd或者mac的终端,输入:

pip install requests

获取响应内容

requests.get( )方法获取响应内容

import requestsr=requests.get('https://www.baidu.com/?tn=02003390_3_hao_pg')r.encoding
Out[3]: 'ISO-8859-1'r.status_code
Out[4]: 200

响应对象(以r为例)的一些具体信息

响应对象信息 描述
r.text 服务器响应的内容,会自动根据响应头部的字符编码进行解码
r.encoding 服务器内容使用的文本编码
r.status_code 用于检测响应的状态码,返回200:请求成功了;返回4XX:表示客户端错误;返回5XX:表示服务器错误响应
r.content 是字节方式的响应体,会自动解码gzip和deflate编码响应的数据
r.json 是Requests中内置的JSON解码

案例1:第一个爬虫

爬取搜狗页面并保存

import requestsif __name__ == "__main__":# step1:指定urlurl = 'https://www.sogou.com/'# step2:发起请求# get方法会返回一个响应对象response = requests.get(url=url)# step3:获取响应数据.text返回的是字符串形式的响应数据page_text = response.textprint(page_text)# step4:持久化存储with open('./sogou.html', 'w', encoding='utf-8') as fp:fp.write(page_text)print("爬取数据结束!")

定制Requests

有些网页,需要对Requests的参数进行设置才能获取需要的数据,包括传递URL参数、定制请求头、发送POST请求、设置超时

传递URL参数params:

URL参数可以用来请求特定的数据,比如说在百度中搜索某个特定值得到的网页。

  • 如果是自己直接构建的URL,数据一般会跟在一个问号后面,以键值对的形式放。如:“https://www.baidu.com/s?wd=%E9%A9%AC%E4%BA%91”。‘wd’就是参数名,后面的‘%E9%A9%AC%E4%BA%91’就是参数值。(每次都直接构建的话,就很麻烦了)
  • 在Requests中,可以直接把这些参数保存在字典中,用params(参数)传递到url中。
key_dict={'key1':'value1','key2':'value2'}
r=requests.get('http://httpbin.org/get',params=key_dict)
#url会正确编码为'http://httpbin.org/get?key1=value1&key2=value2'

[结合案例2:爬取搜狗指定词条对应的搜索结果页面,更容易理解]

定制请求头headers

  • 请求头:Headers提供了关于请求、响应或其他发送实体的信息。

  • 常用请求头信息:

-User-Agent:请求载体的身份标识

-Connection:请求完毕后,是断开连接还是保持连接。

  • **查看请求头:**在浏览器中随便打开一个网页:单击右键-检查 或者快捷键f12,得到以下页面。

    在UA信息中可以看到请求载体的信息,包括浏览器信息等

  • UA伪装:是一种反反爬虫机制。门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体的身份标识是某一浏览器说明该请求是一个正常请求。如果不是,则表示该请求是一个不正常的请求。则请求可能会被拒绝。所以我们的爬虫程序需要进行UA伪装(绝大部分的爬虫程序都需要进行UA伪装)

在requests中,我们可以利用参数Headers伪装成浏览器身份,具体参考案例2

发送post请求

post请求就是:requests.post()。实现post请求,要传递一个字典给requests中的data参数,这个数据字典就会咋发出请求时自动编码为表单形式。【参考案例3】

设置超时timeout

timeout参数:在特定的描述结束之后停止等待响应。

即:如果服务器在timeout秒之内没有应答,则返回异常。

案例2:建议网页采集器

需求:爬取搜狗指定词条对应的搜索结果页面

import requests#UA伪装:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体的身份标识是某一浏览器
# 说明该请求是一个正常请求。如果不是,则表示该请求是一个不正常的请求。则请求可能会被拒绝。
#所以我们的爬虫程序需要进行UA伪装
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}
url='https://www.baidu.com/s?'
#处理url携带的参数:封装到字典中
kw=input("enter a word:")
param={'wd':kw
}
response=requests.get(url=url,params=param,headers=headers)
page_text=response.text
print(page_text)
fileName=kw+'.html'
with open(fileName,'w',encoding='utf-8') as fp:fp.write(page_text)
print(fileName,'保存成功!')

案例3:破解百度翻译

需求:输入单词能够爬取百度翻译中对应的翻译内容

  • 1、打开百度翻译,输入单词后搜索,打开【检查】

  • 2、选择【XHR】类型的数据包,查看哪个数据包是用来得到翻译效果的

  • 3、找到对应的url

#-post请求(携带了参数)
#-响应数据是一组json数据
import requests
import json
#1.指定url
post_url='https://fanyi.baidu.com/sug'#2.进行UA伪装
headers={'headers':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}
#3.post请求参数处理,同get一样
word=input('enter a word:')
data={'kw':word}#4.请求发送
response=requests.post(url=post_url,data=data,headers=headers)#是json数据
#5.获取相应数据:json()方法返回的是obj,(只有确定相应数据的类型,才可以使用json)
dic_obj=response.json()
print(dic_obj)#6.进行持久化存储
filename=word+'.json'
fp=open(filename,'w',encoding='utf-8')
json.dump(dic_obj,fp=fp,ensure_ascii=False)#中文不能使用ascii码编码
print('over!')

案例4:豆瓣电影排行榜前250进行解析

案例来源于《python网络爬虫从入门到实战》。

需求:对豆瓣电影排行榜前250名的页面进行抓取;获取这些电影的名字。

  1. 分析网页:250名电影一共有10页,每页有25条数据。第一页的网址为”https://movie.douban.com/top250?start=0”;第二页的网址为:“https://movie.douban.com/top250?start=25”(也可以是https://movie.douban.com/top250?start=25&filter=,后面这个“&filter没影响”)

    可以发现:这些网页的网址,前面都是相同的,控制第几页的参数就是问号后面的“start”。

  2. 设置url:可以利用循环,构建完整的url字符串;也可以用参数params

  3. 设置headers,进行爬取,获取服务器数据。

  4. 利用bs4中的BeautifulSoup解析,获取电影名字

import requests
from bs4 import BeautifulSoup
def get_moives():headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}moive_list=[]for i in range(0,10):link='https://movie.douban.com/top250?start='+str(i*25)r=requests.get(link,headers=headers,timeout=10)print(str(i+1),"页面响应状态:",r.status_code)# print(r.text)soup=BeautifulSoup(r.text,'lxml')#转化成BeautifulSoup对象div_list =soup.find_all('div',class_='hd')for each in div_list:moive=each.a.span.text.strip()moive_list.append(moive)return moive_list
print(get_moives())
'''
1 页面响应状态: 200
2 页面响应状态: 200
3 页面响应状态: 200
4 页面响应状态: 200
5 页面响应状态: 200
6 页面响应状态: 200
7 页面响应状态: 200
8 页面响应状态: 200
9 页面响应状态: 200
10 页面响应状态: 200
['肖申克的救赎', '霸王别姬', '阿甘正传', '泰坦尼克号', '这个杀手不太冷', '美丽人生', '千与千寻', '辛德勒的名单', '盗梦空间', '忠犬八公的故事', '星际穿越', '楚门的世界', '海上钢琴师', '三傻大闹宝莱坞', '机器人总动员', '放牛班的春天', '无间道', '疯狂动物城', '大话西游之大圣娶亲', '熔炉', '控方证人', '教父', '当幸福来敲门', '触不可及', '怦然心动', '龙猫', '末代皇帝', '寻梦环游记', '蝙蝠侠:黑暗骑士', '活着', '哈利·波特与魔法石', '指环王3:王者无敌', '乱世佳人', '素媛', '飞屋环游记', '摔跤吧!爸爸', '我不是药神', '何以为家', '十二怒汉', '哈尔的移动城堡', '少年派的奇幻漂流', '鬼子来了', '大话西游之月光宝盒', '猫鼠游戏', '天空之城', '闻香识女人', '天堂电影院', '指环王2:双塔奇兵', '钢琴家', '让子弹飞', '罗马假日', '海蒂和爷爷', '指环王1:护戒使者', '黑客帝国', '大闹天宫', '教父2', '死亡诗社', '辩护人', '狮子王', '绿皮书', '搏击俱乐部', '饮食男女', '美丽心灵', '本杰明·巴顿奇事', '窃听风暴', '情书', '穿条纹睡衣的男孩', '两杆大烟枪', '西西里的美丽传说', '看不见的客人', '拯救大兵瑞恩', '音乐之声', '飞越疯人院', '小鞋子', '阿凡达', '哈利·波特与死亡圣器(下)', '沉默的羔羊', '海豚湾', '致命魔术', '禁闭岛', '布达佩斯大饭店', '蝴蝶效应', '美国往事', '心灵捕手', '低俗小说', '春光乍泄', '摩登时代', '七宗罪', '喜剧之王', '致命ID', '杀人回忆', '功夫', '超脱', '哈利·波特与阿兹卡班的囚徒', '加勒比海盗', '被嫌弃的松子的一生', '红辣椒', '狩猎', '请以你的名字呼唤我', '7号房的礼物', '剪刀手爱德华', '勇敢的心', '断背山', '唐伯虎点秋香', '入殓师', '第六感', '天使爱美丽', '哈利·波特与密室', '爱在黎明破晓前', '重庆森林', '一一', '幽灵公主', '蝙蝠侠:黑暗骑士崛起', '小森林 夏秋篇', '阳光灿烂的日子', '菊次郎的夏天', '超能陆战队', '完美的世界', '无人知晓', '爱在日落黄昏时', '消失的爱人', '小森林 冬春篇', '借东西的小人阿莉埃蒂', '倩女幽魂', '甜蜜蜜', '侧耳倾听', '幸福终点站', '时空恋旅人', '驯龙高手', '萤火之森', '玛丽和马克思', '怪兽电力公司', '教父3', '一个叫欧维的男人决定去死', '大鱼', '玩具总动员3', '告白', '傲慢与偏见', '神偷奶爸', '寄生虫', '釜山行', '阳光姐妹淘', '射雕英雄传之东成西就', '被解救的姜戈', '未麻的部屋', '恐怖直播', '哪吒闹海', '我是山姆', '哈利·波特与火焰杯', '血战钢锯岭', '头号玩家', '新世界', '模仿游戏', '七武士', '喜宴', '黑客帝国3:矩阵革命', '花样年华', '头脑特工队', '电锯惊魂', '三块广告牌', '卢旺达饭店', '你的名字。', '达拉斯买家俱乐部', '疯狂原始人', '上帝之城', '谍影重重3', '英雄本色', '风之谷', '心迷宫', '惊魂记', '九品芝麻官', '纵横四海', '海街日记', '岁月神偷', '记忆碎片', '忠犬八公物语', '荒蛮故事', '爱在午夜降临前', '绿里奇迹', '爆裂鼓手', '小偷家族', '贫民窟的百万富翁', '色,戒', '真爱至上', '东邪西毒', '无敌破坏王', '疯狂的石头', '冰川时代', '雨中曲', '黑天鹅', '你看起来好像很好吃', '恐怖游轮', '2001太空漫游', '雨人', '茶馆', '恋恋笔记本', '魔女宅急便', '遗愿清单', '城市之光', '萤火虫之墓', '可可西里', '大佛普拉斯', '无间道2', '牯岭街少年杀人事件', '虎口脱险', '源代码', '人工智能', '初恋这件小事', '海边的曼彻斯特', '背靠背,脸对脸', '东京教父', '小丑', '罗生门', '终结者2:审判日', '青蛇', '奇迹男孩', '二十二', '波西米亚狂想曲', '房间', '疯狂的麦克斯4:狂暴之路', '新龙门客栈', '无耻混蛋', '魂断蓝桥', '血钻', '千钧一发', '步履不停', '黑客帝国2:重装上阵', '彗星来的那一夜', '战争之王', '崖上的波妞', '心灵奇旅', '爱乐之城', '谍影重重2', '燃情岁月', '阿飞正传', '海洋', '谍影重重', '再次出发之纽约遇见你', '穿越时空的少女', '火星救援', '末路狂花', '朗读者', '香水', '地球上的星星', '我爱你', '完美陌生人', '千年女优', '驴得水', '聚焦', '浪潮']
'''

爬虫入门知识+简单案例《python网络爬虫从入门到实践》静态网页抓取相关推荐

  1. python网络爬虫从入门到实践(第2版)_带你读《Python网络爬虫从入门到实践(第2版)》之三:静态网页抓取-阿里云开发者社区...

    第3章 静态网页抓取 在网站设计中,纯粹HTML格式的网页通常被称为静态网页,早期的网站一般都是由静态网页制作的.在网络爬虫中,静态网页的数据比较容易获取,因为所有数据都呈现在网页的 HTML代码中. ...

  2. python网络爬虫的基本步骤-python爬虫入门需要哪些基础/python 网络爬虫教程

    如何入门 Python 爬虫 入门个吊,放弃 python爬虫入门需要哪些基础 现在之所以有多的小伙伴热衷于爬虫技术,无外乎是因为爬我们做很多事情,比如搜索引擎.采集数据.广告过滤等,以Python为 ...

  3. 简单了解Python网络爬虫

    网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取信息的程序或者脚本. 网络爬虫是互联网上进行信息采集的通用手段,在互联网的各个专业方向上都是不可或缺的底层技术支撑.本课程从爬 ...

  4. python网络爬虫权威指南 百度云-Python网络爬虫权威指南 PDF 第2版

    给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python.网络爬虫方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小5.54 MB,瑞安·米切尔编写,目前豆瓣.亚马逊. ...

  5. python爬虫教程视频下载-利用Python网络爬虫获取电影天堂视频下载链接【详细教程】...

    相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来. [二.项目准备] ...

  6. python网络爬虫权威指南 百度云-Python网络爬虫权威指南(第2版)

    版权声明 O'Reilly Media, Inc. 介绍 业界评论 前言 什么是网页抓取 为什么要做网页抓取 关于本书 排版约定 使用代码示例 O'Reilly Safari 联系我们 致谢 电子书 ...

  7. python爬虫新闻热点_利用Python网络爬虫技术追踪时事热点

    龙源期刊网 http://www.qikan.com.cn 利用 Python 网络爬虫技术追踪时事热点 作者:廖泽龙 王昊源 刘紫嫣

  8. python爬虫好友聊天记录_利用Python网络爬虫抓取微信好友的签名及其可视化展示...

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  9. python爬虫好友图片_利用Python网络爬虫抓取微信好友的签名及其可视化展示

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  10. 【爬虫】 静态网页抓取

    目录 静态页面抓取 安装Requests 获取响应内容 定制Requests 传递URL参数 定制请求头 发送POST参数 超时 Requests爬虫实践:TOP250电影数据 网站分析 静态页面抓取 ...

最新文章

  1. android数据库isnull,Android中SQLite数据库知识点总结
  2. 在i386平台Linux 2.6 上实现一个系统调用
  3. ASP.NET MVC5微信公众平台整合开发实战教程
  4. java for each 的源_Java JDK1.5的新特性之for-each循环的底层原理
  5. js(Dom+Bom)第八天
  6. Linux驱动开发必看详解神秘内核(完全转载)
  7. 存储器块清零c语言版,存储器块清零实验报告
  8. 韩媒体:900万人个人信息被非法泄露到中国
  9. Python字典类型内部做判断赋值
  10. HDU 2896 病毒侵袭(AC自动机/模板题)
  11. Commons Configuration之一简介
  12. 一般将来时语法课教案_初中英语笔试教案模板
  13. 修改Wordpress插件---advanced-access-manager.1.7.3---
  14. 毛星云OpenCV3编程入门之python实现
  15. 基于stm32的两轮自平衡小车2(原理篇)
  16. 小程序二维码和带参数的二维码生成
  17. 腾讯云折(tian)腾(keng)记
  18. docker logs查看日志
  19. php gbk转拼音
  20. 推荐一个java技术文章公众号

热门文章

  1. Linux 操作系统原理 — 内存 — 大页内存
  2. 小米9008授权账号_小米AI音箱APP的秘密
  3. Linux 系统批量安装字体的方法
  4. 实对称矩阵的特征值求法_理解矩阵得相似对角化
  5. java代码餐馆管理系统_Java 餐厅收银管理系统
  6. 创新创业基础-李德平章节测试答案
  7. 创业基础(第三章:创业机会及其识别与评价) 来自高校:全国大学生创新创业实践联盟 分类:创新创业 学习规则:按序学习
  8. 基于Matlab的极限学习机(ELM)实现
  9. Matlab R2008a破解
  10. hadoop大数据平台_Hadoop之外的3个大数据平台