基于Python的简易网页爬取器

一、创作背景

Python作为当今热门的编程语言之一,其强大的自动化处理文件能力和爬虫爬取信息能力受广大工作者喜爱,其受欢迎程度已经不亚于Java、C++等语言,甚至有段时间一度超过了Java语言。此项目是基于Python语言制作的简易网页爬取器,利用Python的爬虫爬取信息的能力,模拟浏览器的搜索引擎进行词条搜索过程,并保存该词条的搜索结果页面,即html文件。

二、实现功能

爬取搜狗指定词条对应的搜索结果页面,输入任意词条,输出与输入相对应的词条的搜索结果页面的html文件,并能成功打开此文件,实现网页爬取效果。

三、基本思路

爬取网页信息,可以模拟浏览器的搜索引擎进行词条搜索的过程,我们平时利用浏览器的搜索引擎搜索词条,首先第一步就是打开网页,然后在对应搜索框中输入我们要搜索的词条,单击搜索,网页进行响应,最后打开一个新的搜索结果页面。我们可以利用requests库的相关指令模拟此过程。

requests模块编码

requests是Python实现的最简单易用的HTTP库。
库中实现爬取网页信息的基本语句为

requests.get(url,garams,headers)

指定url

首先打开搜狗搜索网页,任意输入一个词条进行搜索,例如“江西”,我们会得到一个含有“江西”这个词条的所有搜索结果的页面,网页地址为https://www.sogou.com/web?query=%E6%B1%9F%E8%A5%BF&_asf=www.sogou.com&_ast=&w=01019900&p=40040100&ie=utf8&from=index-nologin&s_from=index&sut=1857&sst0=1615465461995&lkt=0%2C0%2C0&sugsuv=00B7E063B66DB3135ECE82C165D74368&sugtime=1615465461995,这么一长串的地址,那么什么是有用的呢,https://www.sogou.com/web?query=%E6%B1%9F%E8%A5%中%E6%B1%9F%E8%A5%就是我们所输入的词条“江西”,“=”前面的“query”是一个变量,在这之后的咱都可以忽略,不重要,而且变量query可以定义字典封装,将其写入字典中,在字典中input词条。

    #指定url
    url='https://www.sogou.com/web?'
    kw=input('Enter sometings:')
    #定义字典封装
    param={
        'query':kw
    }

发送请求

利用requests.get(url,garams,headers)来获取信息,并将所获取到的信息用response储存。

    #发起请求
    response = requests.get(url=url,params=param,headers=headers)

获取响应数据

用response.text获取网页的HTML字符串,并将所获取的字符串储存在page_text这个变量中,定义一个变量fileName等于我们一开始输入的词条,并以“.html”后缀的形式保存。

    #获取响应数据
    page_text = response.text
    fileName=kw+'.html'

持久性储存

利用“写”代码(fp.write)将之前所获取的响应数据写入html文件中,进行持久性储存。
注意:用response.text获取网页的HTML字符串,往往会出现乱码,于是我们就可以用response.encoding='utf-8’消除乱码,以保持数据完整。

	#持久性储存
    with open(fileName,'w',encoding='utf-8') as fp:
        fp.write(page_text)

反爬机制:UA检测

写完上述四步代码后,仍然会出现报错。为什么会这样呢?这是由于网页的一种反爬机制,UA检测。User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示。说通俗易懂点吧,其实说白了就是工厂里的员工都穿着工服,如果没有穿工作服的话,保安就不认识你,也就不会让你进入。

反反爬对策:UA伪装

上面提到了所谓的反爬机制——UA检测,但这种机制并不是不能破解的,在编写的爬虫当中可以通过伪装 UA 可以绕过检测,也就是我们所讲的反反爬机制——UA伪装。UA伪装就是给我们的爬虫穿上工作服,然后顺利的通过保安那一关。那么怎么给我们的爬虫穿上这个所谓的衣服呢?于是,我们就先要知道我们的User Agent到底是什么吧。
首先,打开任意一个网页,单击鼠标右键,出现如下对话框,单击"检查",然后在弹出的界面中找到“Network”,并单击“Network”,再“Win+R”刷新界面,再在“Name”中任意点击一个name,最后在右侧弹出的信息框中找到User Agent,User Agent后的信息就是我们要找的(具体操作如下所示)。在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到User Agent后,我们在代码中定义一个headers字典,将刚刚找到的User Agent信息复制粘条到headers字典中进行封装,最后在requests.get中将我们的headers写入,这样我们的爬虫就有了自己的User Agent了,这就是UA伪装。
例如:

    #UA伪装
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.1071 SLBChan/23'
    }
    # 省略部分代码
    response = requests.get(url=url,params=param,headers=headers)

四、效果演示

运行写好的代码,在命令框中输入任意你想搜索的词条,例如“江西师范大学”,单击回车,提示“江西师范大学.html ,下载成功!”,这时我们可以在左侧project的根路径下发现“江西师范大学.html”文件,这时含有搜索结果的信息就以“html”的形式保存了下来,打开这个“江西师范大学.html”文件,访问所生成的网页,会发现它和我们用搜狗搜索引擎搜索的结果一致。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

五、源码

import requests
if __name__ == '__main__':
    #UA伪装
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.1071 SLBChan/23'
    }
    #指定url
    url='https://www.sogou.com/web?'
    kw=input('Enter sometings:')
    #定义字典封装
    param={
        'query':kw
    }
    #发起请求
    response = requests.get(url=url,params=param,headers=headers)
    #获取响应数据
    page_text = response.text
    fileName=kw+'.html'
    #持久性储存
    with open(fileName,'w',encoding='utf-8') as fp:
        fp.write(page_text)
    print(fileName,'下载成功!')

六、总结

这是笔者第一次用Python编写的第一个爬虫程序,这个程序虽然只是很简单的调用了requests库,并利用requests.get抓取网页信息,但它让我领略到了Python的强大能力,希望通过后续的学习,编写出更加实用的程序,让Python给我的学习和生活带来更多便利!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一款可以复制别人开区网站的软件,输入地址即可下载整个网站源码程序,php asp 之类的动态程序无法下载。只能下载html htm 的静态页面文件! Teleport Ultra 所能做的,不仅仅是离线浏览某个网页,它可以从 Internet 的任何地方抓回你想要的任何文件。 它可以在你指定的时间自动登录到你指定的网站下载你指定的内容,你还可以用它来创建某个网站的完整的镜象,作为创建你自己的网站的参考。 可以简单快速保存你所喜欢的网页,是仿制网站的利! 如果遇到屏蔽了浏览保存网页,那么用网页整站下载是一种很理想的办法。 使用网页整站下载保存网页就简单多了,软件会自动保存所有的页面,但有时候由于软件功能过于强大,会导致很多不必要的代码、图片、js文件都一并保存到网页中 eleport Ultra 支持计划任务,定时到指定网站下载指定的内容,经由其保存的网站,保持源站点了的 CSS 样式、脚本功能,超链接也都替换为本地链接以方便浏览。 Teleport Ultra 实际就是一个网络蜘蛛(网络机人),自动从网络撷取特定的资料。使用它可以在本地创建完整的网站镜像或副本,共有6种工作模式: 1) 在硬盘中创建一个可浏览的网站副本; 2) 复制一个网站,包括网站的目录结构; 3) 在一个网站中搜索指定的文件类型; 4) 从一个中心站点探测每一个链接的站点; 5) 在已知地址下载一个或多个文件; 6) 在一个网站中搜索指定的关键字。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值