简易网页采集|4

简易网页采集|4

文章目录

  • 简易网页采集|4
    • 写在前面
    • 编码顺序
        • 指定url
        • UA检测与伪装
    • 程序源码
    • 写在后面

写在前面

你好,我是禅墨

之前啊,我们接触到了requests模块,知道他是干什么的,但是要掌握一个模块,就要去练习,去实战。

之后呢,我们一起做五个小实战项目加以掌握:

  1. 简易网页采集器,爬取百度指定词条对应的搜索结果页面
  2. 破解百度翻译
  3. 爬取豆瓣电影分类排行榜,https://movie.douban.com/ 中的电影详情数据
  4. 爬取肯德基餐厅查询 https://www.kfc.com.cn/kfccda/index.aspx 中指定地点的餐厅数据
  5. 爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据 http://scxk.nmpa.gov.cn:81/xk/

前四个都是比较简单的项目,最后一个其实是需要一些复杂的步骤的,我们到时候再说,本篇文章我们就先从第一个开始吧!

编码顺序

指定url

首先我们打开百度首页:

https://www.baidu.com/

输入我们要搜索的词条,以禅墨云为例,我们在网址栏会发现,很长一段字符

https://www.baidu.com/s?wd=禅墨云&rsv_spt=1&rsv_iqid=0xaea3079900012b5e&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=23&rsv_sug1=24&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=12683&rsv_sug4=13427

其实呢我们把后面的全部删掉,只留下禅墨云之前的也是没问题的:

https://www.baidu.com/s?wd=禅墨云

有时url中携带的不只有一个参数,也就是说我们需要把搜索的词条变为动态的,所以我们需要url进行简单的处理:封装到字典中

kw = input('enter a word:')
    param = {
     'wd':kw}

这时就可以把前面的url词条去掉,变为:

https://www.baidu.com/s?

这样,搜索结果就变成我们想要搜索的任何词条

UA检测与伪装

UA检测:门户网站的服务器会检测对应请求载体的身份标识,如果检测到请求的载体身份标识为某一款浏览器说明这是一个正常的请求。但是,如果检测到请求的载体身份标识不是基于某一款浏览器,则表示该请求为不正常请求(爬虫检测),则服务端就会拒绝该次请求。

UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器

其实只需要在url前面加上 headers 就可以了,里面包含了键值User-Agent,以及详细的value值

在浏览器中(以Chrome为例)点击F12,点击network,刷新后会出现很多文件,随便点击一个,打开headers,找到User-Agent对应处即可,然后复制其内容。

简易网页采集|4_第1张图片

headers = {
     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}

之后的就是常规操作了。

程序源码

下面的就是完整的程序以及注释了,仅供学习

# --coding:utf-8 --
#UA:User-Agent(请求载体的身份标识)

#UA检测:门户网站的服务器会检测对应请求载体的身份标识,如果检测到请求的载体身份标识为某一款浏览器
#说明这是一个正常的请求。但是,如果检测到请求的载体身份标识不是基于某一款浏览器,则表示该请求为
#不正常请求(爬虫检测),则服务端就会拒绝该次请求。

#UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器
import requests
if __name__ == '__main__':
    ##UA伪装:将对应的User-Agent封装到一个字典中
    headers = {
     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
    url = 'https://www.baidu.com/s?'
    #处理url携带的参数:封装到字典中
    kw = input('enter a word:')
    param = {
     'wd':kw}
    #对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数
    response = requests.get(url=url,params=param,headers=headers)
    page_text = response.text
    filename = kw+'.html'
    with open(filename,'w',encoding='utf-8') as fp:
        fp.write(page_text)
    print(filename,'保存成功!')

写在后面

OK!这就是本篇文章全部内容了!

欢迎关注禅墨云,我们不见不散!

博客网站同步更新,网址:chanmoyun.gitee.io

在这里插入图片描述

你可能感兴趣的:(爬虫,Python,python,url,爬虫)