当前位置:   article > 正文

Python 爬虫基础学习-(爬取搜索引擎首页的小爬虫,web请求过程剖析)_python实现爬虫以及搜索引擎

python实现爬虫以及搜索引擎

直接跳过安装软件阶段。

爬虫本质上通过程序获取互联网上的资源。

在python中直接用urllib模块完成对浏览器的模拟工作。

  1. from urllib.request import urlopen
  2. #获取一个包叫做urllib的,里面可以请求点击网页。
  3. url = 'http://www.baidu.com' #选择一个百度的网页
  4. reqs= urlopen(url) #很好理解的是,打开一个链接,并把信息传给reqs
  5. with open('myfrist_test.html',mode = 'w') as f: #用with打开一个软件
  6. f.write(reqs.read().encode('utf-8'))
  7. print('done!')

首先引入一个包叫做urllib的request,理解为网页请求的包

urlopen的意思是打开一个网页链接。

打开之后肯定是无法让人直接看到,可以加上一个read()读取里面的信息,并用decode转码。

with open将打开的信息作为一个html文件保存起来。

web请求过程剖析,可以在搜索引擎当中搜索你想要的信息啦

区分为服务器渲染和客户端渲染。

服务器渲染客户端渲染
第一次就能看到源代码

第一次获取的是一个html骨架

第二次返回源数据

如何查看网页中的关键信息,我们从搜狗的信息中找去信息。

 我们用搜狗搜索随便搜些东西,这里用搜素信息篮球为例。

先了解一些前提知识在http页面中,有请求头和响应头,分别在检查页面的

客户端提交信息分为get的显示提交和post的隐式提交。

 点击进去之后,可以看到网页对于你的搜索保存了哪些信息。

这里引用到的包是requests,可以知道的是这个网页在搜索的时候是用https://www.sogou.com/web?query=搜索内容来进行搜索的,然后看到

查看general我们知道这里用的是get 的显示提交,于是写代码有。

  1. import requests
  2. url = 'https://www.sogou.com/web?query=篮球'
  3. reqs = requests.get(url= url1)
  4. print(reqs)
  5. reqs.close()

不过这里肯定会报错,搜索端回认为我们是用的软件爬去信息,不是人工操作。判定的方法可以用requests.url()确定,由于requests的封装已经很好,直接将user-Agents复制下来输入到headers里面就好。

  1. import requests
  2. url = 'https://www.sogou.com/web?query=篮球'
  3. Use_info = {
  4. "User-Agent":"Mozilla/5.0 () (KHTML, like Gecko) Chrome/"
  5. }
  6. reqs = requests.get(url= url1,headers= Use_info)
  7. print(reqs)
  8. reqs.close()

可以看到与我们想要的页面相同的信息。

接下来看看隐式提交post,这次是提交百度查询信息, 要注意一个引擎里面有显式提交也有饮隐式提交,所以需求准确定位到你想要得到的信息,否则就会出问题。     

 

这个里搜索到的百度翻译中的sug页面。 

  1. #使用的是百度翻译页面。
  2. import requests
  3. url2 = 'https://fanyi.baidu.com/sug'
  4. words = input('你想要查什么信息')
  5. dat = {
  6. 'kw':words
  7. }
  8. #发送post请求,发送的数据必须放在字典当中。
  9. trans = requests.post(url2, data= dat)
  10. print(trans.json()) #将服务器返回的内容直接处理成json()
  11. trans.close()

这里用到的是豆瓣的排行榜搜索页面。

  1. #douban
  2. import requests
  3. import pprint
  4. #如果你发现自己发出的get请求参数有点长,可以重新封装
  5. url3 = "https://movie.douban.com/j/chart/top_list"
  6. #重新封装参数
  7. Use_info = {
  8. "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"
  9. }
  10. for i in range(1,5):
  11. param = {
  12. "type": "24",
  13. "interval_id": "100:90",
  14. "action":"" ,
  15. "start":i,
  16. "limit":20,
  17. }
  18. request2 = requests.get(url= url3,params = param,headers = Use_info)
  19. pprint.pprint('第{0}页内容{1}'.format(i,request2.json()))
  20. request2.close()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/616498
推荐阅读
相关标签
  

闽ICP备14008679号