静态网页抓取

在网站设计中,纯HTML格式的网页通常被称之为静态网页,在网络爬虫中静态网页的数据比较容易抓取,因为说有的数据都呈现在网页的HTML代码中。相对而言使用Ajax动态加载的玩个的数据不一定会出现在HTML代码中,就给爬虫抓取增加了难度。

在静态网页抓取中,有一个强大的requests库能够让你轻松的发送HTTP请求,这个库功能完善,而且操作非常简单。

安装requestS

通过pip安装,打开cmd或terminal,键入:

pip install requests

获取响应内容

print("文本编码", r.encoding)

print("响应状态码:", r.status_code)

print("字符串方式的响应体:", r.text)

  • r.text是服务器响应的内容,会自动根据响应头的字符编码进行解码
  • r.encoding是服务器内容使用的文本编码
  • r.status_code用于检测响应的状态码,200请求成功,4xx客户端错误,5xx服务器错误
  • r.content是字节方式的响应体,会自动解码gzip和deflate编码的响应数据
  • r.json()是requests中的内置JSON解码器

指定requests

有些网页需要对request的参数进行测试才能获取需要的数据,这包括url传参,定制请求头,发送post请求,设置超时等。

传递URL参数

如果是自己构建URL那么数据一般会跟在一个问号后面,并且以键值对的形式存放在URL中,例如:https://www.baidu.com/s?ie=UTF-8&wd=pycharm 代码块

keydict = {'key1': '111', 'key2': '222'}

r = requests.get(link, params=keydict)

print("rul已经正确编码", r.url)

print("响应体:\n", r.text)

定制请求头

import requests # 最简单易用的HTTP库

heders = {

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '

'Chrome/96.0.4664.110 Safari/537.36',

'Host': 'www.santostang.com'

}

r = requests.get(link, headers=heders)

print('响应状态码:', r.status_code)

发送post请求

除了GET请求外,又是还需要发送一些表单形式的数据,如果在登录的时候请求就为post,如果用GET请求密码就会显示在地址栏中,这非常的不安全

keydict = {'key1': '111', 'key2': '222'}

r = requests.post(link, data=keydict)

print(r.text)

超时

有时候爬虫遇到服务器长时间不返回,这爬虫程序就会一直等待,造成爬虫程序没有顺利执行。可以在request中timeout参数设定秒数,指定时间内没有响应就返回异常,一般设置为20秒

request爬虫实践:top250电影数据

点击查看代码
def get_movies():
headers = {
'Host': 'movie.douban.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
'charset': 'utf-8'
}
movie_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, allow_redirects=False)
print(str(i + 1), "页响应状态码:", r.status_code)
soup = BeautifulSoup(r.text, "html.parser")
div_list = soup.find_all('div', class_='hd')
for each in div_list:
movie = each.a.span.text.strip()
movie_list.append(movie)
return movie_list
movies = get_movies()
print(movies)

python网络爬虫-静态网页抓取(四)的更多相关文章

  1. python网络爬虫-动态网页抓取(五)

    动态抓取的实例 在开始爬虫之前,我们需要了解一下Ajax(异步请求).它的价值在于在与后台进行少量的数据交换就可以使网页实现异步更新. 如果使用Ajax加载的动态网页抓取,有两种方法: 通过浏览器审查 ...

  2. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  3. PHP网络爬虫实践:抓取百度搜索结果,并分析数据结构

    百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水.代码如下: <?php /** * Created by Benjiemin * Date: 2020/3/5 * Time: 14:5 ...

  4. Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据

    所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...

  5. Python网络爬虫与如何爬取段子的项目实例

    一.网络爬虫 Python爬虫开发工程师,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页 ...

  6. Python实现简单的网页抓取

    现在开源的网页抓取程序有很多,各种语言应有尽有. 这里分享一下Python从零开始的网页抓取过程 第一步:安装Python 点击下载适合的版本https://www.python.org/ 我这里选择 ...

  7. Python 网络爬虫 002 (入门) 爬取一个网站之前,要了解的知识

    网站站点的背景调研 1. 检查 robots.txt 网站都会定义robots.txt 文件,这个文件就是给 网络爬虫 来了解爬取该网站时存在哪些限制.当然了,这个限制仅仅只是一个建议,你可以遵守,也 ...

  8. Python——初识网络爬虫(网页爬取)

    网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫 ...

  9. 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

    1 引言 在编写网络爬虫时,第一步(也是极为关键一步)就是对网络的请求(request)和回复(response)进行分析,寻找其中的规律,然后才能通过网络爬虫进行模拟.浏览器大多也自带有调试工具可以 ...

随机推荐

  1. 【LeetCode】309. Best Time to Buy and Sell Stock with Cooldown 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...

  2. struts2升级至2.3.24方法

    1.替换如下jar包 2.修改web.xml中的struts过滤器配置 将原来的过滤配置注释掉 替换为: 3.struts.xml配置 4. 发现程序中有类报错:缺少  import org.apac ...

  3. 「算法笔记」Link-Cut Tree

    一.简介 Link-Cut Tree (简称 LCT) 是一种用来维护动态森林连通性的数据结构,适用于动态树问题. 类比树剖,树剖是通过静态地把一棵树剖成若干条链然后用一种支持区间操作的数据结构维护, ...

  4. Uncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples

    Uncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples 目录 概 主要内容 实验 ...

  5. 定义制造业操作(定义 MES/MOM 系统)

    定义制造业操作(定义 MES/MOM 系统) 制造业操作包含众多工厂级活动,涉及设备(定义.使用.时间表和维护).材料(识别.属性.位置和状态).人员(资格.可用性和时间表),以及这些资源与包含其信息 ...

  6. 【jvm】03-写了final就是常量池了么

    [jvm]03-写了final就是常量池了么 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请顺手点 ...

  7. 基于Spring MVC + Spring + MyBatis的【网上购物系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45601185 练习点设计:修改.删除 一.语言和环境 实现语言:JAVA语言. 环境 ...

  8. spring练习,使用Eclipse搭建的Spring开发环境,使用set注入方式为Bean对象注入属性值并打印输出。

    相关 知识 >>> 相关 练习 >>> 实现要求: 使用Eclipse搭建的Spring开发环境,使用set注入方式为Bean对象注入属性值并打印输出.要求如下: ...

  9. linux -安装mysql,配置密码,开启远程访问

    1.安装 下载yum源的安装包 yum install https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm 安装 yu ...

  10. SYCOJ27猴子选大王

    题目-猴子选大王 (shiyancang.cn) 一.出队顺序Description有M个人,其编号分别为1-M.这M个人按顺序排成一个圈.现在给定一个数N,从第一个人开始依次报数,数到N的人出列,然 ...