python笔记—>网页爬虫
- python笔记—>网页爬虫 推荐度:
- 相关推荐
python笔记—>网页爬虫
目录
一、了解网页结构
1、网页源代码
1、查看网页源代码以百度为例
2、解读网页源代码
二、requests模块使用方法
1、获取静态网页源代码
2、获取动态加载的数据
1、以豆瓣排行榜为例
2、爬取排行榜数据
一、了解网页结构
1、网页源代码
1、查看网页源代码以百度为例
按快捷键f12
然后点击
然后点击网页上任意位置
即可弹出网页源代码
2、解读网页源代码
1、<!DOCTYPE html> 用来告知 Web 浏览器页面使用了哪种 HTML 版本。
2、<html>定义一个 HTML 文档。
3、<head>定义关于文档的信息。
4、<meta>定义关于 HTML 文档的元信息。
5、<link>定义文档与外部资源的关系。
6、<title> 元素描述了文档的标题
7、<style>定义样式
8、<script>定义客户端脚本。
1、<body>元素包含了可见的页面内容。
2、<textarea> 标签定义一个多行的文本输入控件。
3、<div> 标签定义 HTML 文档中的一个分隔区块或者一个区域部分。常用于组合块级元素,以便通过 CSS 来对这些元素进行格式化。
二、requests模块使用方法
1、获取静态网页源代码
import requests #导入requests库
response=requests.get(url='') #使用get()函数对指定的url发送请求,用resopnse储存接受到的请求
print(response.text)
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=.min.css><title>ç¾åº¦ä¸ä¸ï¼ä½ å°±ç¥é</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus=autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=ç¾åº¦ä¸ä¸ class="bg s_btn" autofocus></span> </form> </div> </div> <div id=u1> <a href= name=tj_trnews class=mnav>æ°é»</a> <a href= name=tj_trhao123 class=mnav>hao123</a> <a href= name=tj_trmap class=mnav>å°å¾</a> <a href= name=tj_trvideo class=mnav>è§é¢</a> <a href= name=tj_trtieba class=mnav>è´´å§</a> <noscript> <a href=.gif?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>ç»å½</a> </noscript> <script>document.write('<a href=".gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">ç»å½</a>');
</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">æ´å¤äº§å</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=;å³äºç¾åº¦</a> <a href=;About Baidu</a> </p> <p id=cp>©2017 Baidu <a href=/>使ç¨ç¾åº¦åå¿è¯»</a> <a href=/ class=cp-feedback>æè§åé¦</a> 京ICPè¯030173å· <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>
2、获取动态加载的数据
1、以豆瓣排行榜为例
豆瓣电影分类排行榜 - 剧情片
按f12后按f5刷新并点击Fectch/XHR
然后点击第二条
获取url为 ''
下拉找到user-Argent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
获取params数据
type=11&interval_id=100%3A90&action=&start=0&limit=20
完整代码如下
import requests
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}
url=''
params={'type':'11','interval_id':'100:90','start':'0','limit':'1'}
response=requests.get(url,headers=headers,params=params)
print(response.json())
[{'rating': ['9.7', '50'], 'rank': 1, 'cover_url': '.jpg', 'is_playable': True, 'id': '1292052', 'types': ['犯罪', '剧情'], 'regions': ['美国'], 'title': '肖申克的救赎', 'url': '/', 'release_date': '1994-09-10', 'actor_count': 25, 'vote_count': 2710318, 'score': '9.7', 'actors': ['蒂姆·罗宾斯', '摩根·弗里曼', '鲍勃·冈顿', '威廉姆·赛德勒', '克兰西·布朗', '吉尔·贝罗斯', '马克·罗斯顿', '詹姆斯·惠特摩', '杰弗里·德曼', '拉里·布兰登伯格', '尼尔·吉恩托利', '布赖恩·利比', '大卫·普罗瓦尔', '约瑟夫·劳格诺', '祖德·塞克利拉', '保罗·麦克兰尼', '芮妮·布莱恩', '阿方索·弗里曼', 'V·J·福斯特', '弗兰克·梅德拉诺', '马克·迈尔斯', '尼尔·萨默斯', '耐德·巴拉米', '布赖恩·戴拉特', '唐·麦克马纳斯'], 'is_watched': False}]
2、爬取排行榜数据
import requests
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}
url=''
params={'type':'11','interval_id':'100:90','start':'0','limit':'20'}
response=requests.get(url,headers=headers,params=params)
content=response.json()
for i in content:title=i['title']score=i['score']print(title,':',score)
肖申克的救赎 : 9.7
霸王别姬 : 9.6
美丽人生 : 9.6
辛德勒的名单 : 9.6
控方证人 : 9.6
阿甘正传 : 9.5
这个杀手不太冷 : 9.4
千与千寻 : 9.4
泰坦尼克号 : 9.4
盗梦空间 : 9.4
星际穿越 : 9.4
忠犬八公的故事 : 9.4
大闹天宫 : 9.4
十二怒汉 : 9.4
无间道 : 9.3
海上钢琴师 : 9.3
楚门的世界 : 9.3
末代皇帝 : 9.3
活着 : 9.3
放牛班的春天 : 9.3