用 Python requests库 爬取网页数据

时间:2022-09-18 17:59:57

一、爬取学者网数据

1、requests 库的获取

1.1 在终端中输入

 pip install requests

1.2 在PyCharm中添加requests库

1.2.1 在file中选取Default Settings

用 Python  requests库 爬取网页数据

1.2.2 如图选取对应栏目,点击左下角位置的➕
用 Python  requests库 爬取网页数据

1.2.3 在搜索框中输入 requests ,选中 requests, 再点击左下角的 Install Package 系统会帮你装对应的库

用 Python  requests库 爬取网页数据

1.3 实例代码

In [6]: import requests

# 用 requests 发送 get请求
In [7]: r = requests.get('http://www.scholat.com/nullpointexception')

# encoding 是从 HTTP header 中猜测的响应内容编码方式
In [9]: r.encoding
Out[9]: 'utf-8'

# apparent_encoding 是从内容中分析出的响应内容编码方式
In [10]: r.apparent_encoding
Out[10]: 'utf-8'

# url 对应的页面内容
In [11]: r.text[:100]
Out[11]: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd'

In [12]: r.text[:1000]
Out[12]: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r\n \r\n<html>\r\n\t<head>\r\n <title>练质彬@学者网</title>\r\n <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\r\n \r\n \r\n <link href="template/homepage/personIndex.css?v=20170328"\r\n\trel="stylesheet" type="text/css" />\r\n <meta name="description"\r\n\tcontent="学者网是一个在线学术信息服务平台,提供学术信息管理、文献检索、学术网盘以及学者交流等服务,通过它您可以轻松构建个人、团队学术主页,并通过学术社区发现具有相同研究兴趣的学者,及时了解他们的最新动态并与他们分享你的学术成就..." />\r\n <meta name="keywords"\r\n\tcontent="练质彬,学者网,学术搜索,个人主页,团队协作,课程平台,在线交流" />\r\n <script type="text/javascript" src="./scripts/jquery-1.7.1.min.gzjs"></script>\r\n <script src="/course/layer/layer.js" type="text/javascript"></script>\r\n <style type="text/css">\r\n a {\r\n\ttext-decoration: none;\r\n }\r\n \r\n #mainbody {\r\n\twidth: 960px;\r\n\tpadding: 40px 0;\r\n\tmargin: 0 auto;\r\n\tfont-size: 13px;\r\n }\r\n \r\n #topHeadBar {\r\n\twidth: 960px;\r\n\toverflow: hidden;\r\n\tbackground: #6dd3d8;\r\n\tmargin-top:10px;\r\n\tbackground-image: url(./template/homepage/imgs/bac'

二、百度搜索关键词提交

在搜索框输入 python 得到的网页地址 :
https://www.baidu.com/s?wd=python&rsv_spt=1&rsv_iqid=0x9b20316600051ceb&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&oq=c&rsv_t=241daemLPTX%2FpFyTqO6Xoe6wmams83DJnrsWTqpzcVQnMN%2FKzxW78eFnJ74w9o3uEnSa&rsv_pq=bbbf70610002863d&inputT=2522&rsv_sug3=37&rsv_sug1=29&rsv_sug7=100&rsv_sug2=0&rsv_sug4=12191&rsv_sug=1

在搜索框输入 csdn 得到的网页地址 :
https://www.baidu.com/s?wd=csdn&rsv_spt=1&rsv_iqid=0x9b20316600051ceb&issp=1&f=3&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&oq=csdn&rsv_t=3c3bUHYKZqkUSvyPBQVUejoOrLpFRGyxpBsduDdusv3NNT9bBid0XqJ7g9%2FjyvkgdXy9&rsv_pq=dd16510a000297f8&prefixsug=csdn&rsp=3

在搜索框输入 scholat 得到的网页地址 :
https://www.baidu.com/s?wd=scholat&rsv_spt=1&rsv_iqid=0x9b20316600051ceb&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&oq=scholat&rsv_t=4b438UxiQNAYy7E2jFVvDKfe6n0lJpLG7Y%2Fhbtar%2BSGIdUDpmmKv5ZhTd6GWkq9gQm8A&rsv_pq=8447a5eb00028858&inputT=2&rsv_sug3=80&rsv_sug1=64&rsv_sug7=100&rsv_sug2=0&rsv_sug4=581&rsv_sug=1

由三个搜索输入得到的网页地址分析可知

wd 是搜索提交关键词

所以百度关键词接口是:http://www.baidu.com/s?wd=keyword

实例代码


In [13]: r = requests.get('http://www.baidu.com/s?wd=python')

In [14]: r.encoding = r.apparent_encoding

In [15]: r.text[:1000]
Out[15]: '<!DOCTYPE html>\n<!--STATUS OK-->\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n\n\n<html>\n\t<head>\n\t\t\n\t\t<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\n\t\t<meta http-equiv="content-type" content="text/html;charset=utf-8">\n\t\t<meta content="always" name="referrer">\n <meta name="theme-color" content="#2932e1">\n <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />\n <link rel="icon" sizes="any" mask href="//www.baidu.com/img/baidu.svg">\n <link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" title="百度搜索" /> \n\t\t\n\t\t\n<title>python_百度搜索</title>\n\n\t\t\n\n\t\t\n<style data-for="result" type="text/css" id="css_newi_result">body{color:#333;background:#fff;padding:6px 0 0;margin:0;position:relative;min-width:900px}\nbody,th,td,.p1,.p2{font-family:arial}\np,form,ol,ul,li,dl,dt,dd,h3{margin:0;padding:0;list-style:none}\ninput{pad'

In [16]: r.status_code
Out[16]: 200