爬虫之简易的网页采集器(代码与教程)

爬虫的工作流程:
1.发起请求2.获取响应内容3.解析内容4.保存数据。

该爬虫中使用requests模块和用到UA伪装的方式。
UA伪装,即请求载体身份标识的伪装:
User-Agent:
请求载体身份标识,通过浏览器发起的请求,请求载体为浏览器,则该请求的User-Agent为浏览器的身份标识,如果使用爬虫程序发起的请求,则该请求的载体为爬虫程序,则该请求的User-Agent为爬虫程序的身份标识。服务器可以通过该值来判断发起请求的是浏览器还是爬虫程序。
反爬机制:
某些门户网站会对访问该网站的请求中的User-Agent进行捕获和判断,如果该请求的UA为爬虫程序,那么就拒绝该提供请求数据。
反反爬策略:
将爬虫的UA伪装成某一款浏览器的身份标识

那么如何获取User-Agent呢?打开浏览右键检查进入到Network按Ctrl+R显示已经加载的请求,点击该请求的网页然后翻到User-Agent的位置然后将信息复制粘贴即可。如下图
在这里插入图片描述

源代码与注释如下,运行后输入我们要搜索的内容即可进行爬取:


import requests

#UA伪装:
#UA:User-Agent(请求载体的身份标识)
#UA伪装:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份标识为某一款浏览器
#说明该请求时一个正常请求(即用户通过浏览器发起的请求)但是,如果检测到请求的载体身份标识不是基于某一款浏览器的,
#则表示该请求为不正常的请求(爬虫)。那么服务器端就很有可能拒绝该次请求。

#UA伪装:让爬虫对应的请求载体身份标识伪装成某一刻浏览器
if  __name__ == "__main__":
    #UA伪装:将对应的User-Agent封装到一个字典中
    header = {
    
    
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 Edg/86.0.622.38'
    }
    url="https://www.sogou.com/web"  #url携带的参数需要修改为动态,这里为query=
    #处理url携带的参数:封装到字典
    guanjianci = input('enter a word:')
    param ={
    
    
        'query':guanjianci
    }
    #对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数
    response = requests.get(url=url,params=param,headers=header)
    #获取响应数据
    page_text = response.text
    fileName = guanjianci+'.html'
    with open(fileName,'w',encoding='utf-8') as fp:
        fp.write(page_text)
    print(fileName,"保存成功")

猜你喜欢

转载自blog.csdn.net/qq_45701131/article/details/109005082
今日推荐