赞
踩
直接跳过安装软件阶段。
爬虫本质上通过程序获取互联网上的资源。
在python中直接用urllib模块完成对浏览器的模拟工作。
- from urllib.request import urlopen
- #获取一个包叫做urllib的,里面可以请求点击网页。
- url = 'http://www.baidu.com' #选择一个百度的网页
- reqs= urlopen(url) #很好理解的是,打开一个链接,并把信息传给reqs
- with open('myfrist_test.html',mode = 'w') as f: #用with打开一个软件
- f.write(reqs.read().encode('utf-8'))
- print('done!')
首先引入一个包叫做urllib的request,理解为网页请求的包
urlopen的意思是打开一个网页链接。
打开之后肯定是无法让人直接看到,可以加上一个read()读取里面的信息,并用decode转码。
with open将打开的信息作为一个html文件保存起来。
web请求过程剖析,可以在搜索引擎当中搜索你想要的信息啦
区分为服务器渲染和客户端渲染。
服务器渲染 | 客户端渲染 |
第一次就能看到源代码 | 第一次获取的是一个html骨架 第二次返回源数据 |
如何查看网页中的关键信息,我们从搜狗的信息中找去信息。
我们用搜狗搜索随便搜些东西,这里用搜素信息篮球为例。
先了解一些前提知识在http页面中,有请求头和响应头,分别在检查页面的
客户端提交信息分为get的显示提交和post的隐式提交。
点击进去之后,可以看到网页对于你的搜索保存了哪些信息。
这里引用到的包是requests,可以知道的是这个网页在搜索的时候是用https://www.sogou.com/web?query=搜索内容来进行搜索的,然后看到
查看general我们知道这里用的是get 的显示提交,于是写代码有。
- import requests
-
- url = 'https://www.sogou.com/web?query=篮球'
-
- reqs = requests.get(url= url1)
- print(reqs)
- reqs.close()
不过这里肯定会报错,搜索端回认为我们是用的软件爬去信息,不是人工操作。判定的方法可以用requests.url()确定,由于requests的封装已经很好,直接将user-Agents复制下来输入到headers里面就好。
- import requests
- url = 'https://www.sogou.com/web?query=篮球'
- Use_info = {
- "User-Agent":"Mozilla/5.0 () (KHTML, like Gecko) Chrome/"
- }
- reqs = requests.get(url= url1,headers= Use_info)
- print(reqs)
- reqs.close()
可以看到与我们想要的页面相同的信息。
接下来看看隐式提交post,这次是提交百度查询信息, 要注意一个引擎里面有显式提交也有饮隐式提交,所以需求准确定位到你想要得到的信息,否则就会出问题。
这个里搜索到的百度翻译中的sug页面。
- #使用的是百度翻译页面。
- import requests
- url2 = 'https://fanyi.baidu.com/sug'
- words = input('你想要查什么信息')
- dat = {
- 'kw':words
- }
- #发送post请求,发送的数据必须放在字典当中。
- trans = requests.post(url2, data= dat)
- print(trans.json()) #将服务器返回的内容直接处理成json()
- trans.close()
这里用到的是豆瓣的排行榜搜索页面。
- #douban
- import requests
- import pprint
- #如果你发现自己发出的get请求参数有点长,可以重新封装
- url3 = "https://movie.douban.com/j/chart/top_list"
- #重新封装参数
- Use_info = {
- "User-Agent":"Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
- }
- for i in range(1,5):
- param = {
- "type": "24",
- "interval_id": "100:90",
- "action":"" ,
- "start":i,
- "limit":20,
- }
- request2 = requests.get(url= url3,params = param,headers = Use_info)
- pprint.pprint('第{0}页内容{1}'.format(i,request2.json()))
- request2.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。