欢迎光临万书涛的个人博客

搜狗搜索网站简单爬取采集案例笔记

作者:万书涛  / 日期:2021-05-11 19:28:20 /  来源:本站原创 /   浏览:
摘要
搜狗搜索采集数据采用网址关键词匹配的方式,根据输入的关键词结合requests来进行网页的请求和读取,本文将介绍下搜狗搜索结果页的页面数据怎样爬取  
要采集到搜索结果,首先应该分析要爬取的页面网址,这里的页面网址有的是静态页面网址,有的是局部刷新的ajax网址,而万书涛今天爬取的搜索结果页采用的是静态网址的形式,至于局部刷新那种动态网址,形式上一般是浏览器上面的网址固定不变,而要通过抓包来拿到动态网址,这个不在今天讨论范围之内,好的,下面来看下爬取过程。

1.获取搜索url地址并进行请求头设置
首先是获取搜索url地址,假设我们搜索“奥运会”这个词,如下图所示,网址就是“https://www.sogou.com/web?query=奥运会”,至于奥运会后面的参数不用管,因为去掉参数再按回车键还是这个结果。

搜索结果页截图

然后是构建请求头,也就是伪装浏览器的user-agent,如果不进行伪装,那么我们的身份就是爬虫,这个容易被对方服务器拒绝,至于请求头,这个从谷歌浏览器的firebug里看,如下图所示
myheaders = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, likeGecko)Chrome/88.0.4324.104 Safari/537.36'}

请求头构建截图

2.抓取页面并采集到页面数据
抓取页面用到requests模块,所以提前导入,导入方法如下:import requests。
然后通过get方法取得数据,代码如下:
res=requests.get(url=url,params=myparam,headers=myheaders)#发送请求,获取响应数据
getdata=res.text#获取相应数据。
 
3.采集数据到本地化存储
采集到搜索结果后就可以存到文件里了,代码如下:
with open('./sougou.html','w',encoding='utf-8') as wstfi:
    wstfi.write(getdata)
print("爬取数据完毕")

4.完整代码展示:
import requests
if __name__ == '__main__':
    url='https://www.sogou.com/web?'#指定url
 
    myheaders = {
        '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'}
 
    myparam={'query': '奥运会'}
 
    res=requests.get(url=url,params=myparam,headers=myheaders)#发送请求,获取响应数据
    getdata=res.text#获取响应数据
    with open('./sougou.html','w',encoding='utf-8') as wstfi:
        wstfi.write(getdata)
        print("爬取数据完毕")
5.总结和拓展
万书涛这里展示的只是固定搜索“奥运会”,其实可以做成动态的,也就是通过input方法接收输入关键词,然后通过myparam的query后面接收输入的关键词,然后就可以动态获取搜索结果了,在这里只是抛砖引玉,更多方法大家可以自己尝试。
 
所属分类: 暂无分类
微信二维码

扫描关注微信公众号
第一时间获取最新资讯
本文由万书涛原创,地址:https://www.wtaoblog.com/pchongjs/250.html
如需转载,须以文字形式注明本文地址,否则禁止转载

猜你喜欢

无相关信息