在python爬虫中,要想获取url的原网页,就要用到众所周知的强大好用的requests库,在2018年python文档年度总结中,requests库使用率排行第一,接下来就开始简单的使用requests库吧.
配置好python环境后,python配置大家应该都会,至于path路径下载安装界面右下角就有add to path 很简便,这里主要是window环境下的使用,至于Linux环境,我暂时还没有深入了解,用yum install或者 wget命令都是可行的.
在window环境下,推荐是用pip进行安装,因为便捷而且不用考虑文件的解压路径:
pip install requests
首先requests有文档说明,requests文档 多观察库文档,有利于我们了解该库创建者的意图,现在可以尝试使用requests库获取一个网页的源代码了:代码如下
import requests url='https://www.cnblogs.com/hxms/p/10412179.html' response=requests.get(url) print(respones.text)
requests code
但是为了更好获取源代码,还需要对该代码进行一定的优化,比如是否考虑statue_code==200,响应码是否正常,正常还可以请求该网页,否则返回错误原因,代码如下:
import requests def get_page(): try: url="https://www.cnblogs.com/hxms/p/10412179.html" response=requests.get(url) if response.status_code==200: return response.text except requests.ConnectionError: return None get_page()
requests Codes
运用了get_page的函数,对requests的方法进行优化,最后还可以添加main函数进行打印输出
def main(): data=get_page() print(data) if __name__ == "__main__": main()
进行如下
这样就可以简单的获取网页的源代码了,但是在现实过程中,网页是经过js渲染的,即可以理解为该HTML只是个空体,只是引用了某个js文本,这样就会造成requests请求的源代码出现错误,造成后期抓不到想要的数据,不过没有关系,F12提供了强大的抓包工具,无论是Ajax或者是直接js渲染的网页,我们都有相应的解决方法,例如利用selenium库进行自动化运行,抑或是xhr文件里的json字典格式化存储,都是可以解决这些问题的.
关于requests库还有许多参数没用上,比如proxies(代理,抓取数量过大时会导致该请求网址对我们的IP进行封禁,导致304请求失败),headers(头请求),现在许多网页会设置反爬虫设置,如果你不加请求头的话,服务器是不会返回任何信息给你的,但是requests库为你提供了伪装浏览器的方法,运用User-Agent;host等运用字典添加进去,更容易获取我们想要的信息.更多方法可以参考上面的requests文档.