爬虫第一天

爬虫第一天

requests

requests 模块:python 中原生的一款基于网络请求的模块,功能强大,简单便捷,效率极高。
作用:模拟浏览器发送请求。

如何使用: (requests模块的编码流程)
- 指定url
- 发起请求(get或post的请求)
- 获取响应数据
- 持久化存储响应数据

安装requests
windows:

pip intstall requests

抓个搜狗首页数据(get)

import requests


if __name__ == "__main__":
	# step-1:指定url
    url1 = 'https://www.sogou.com/'
    # step-2:发起请求
    response = requests.get(url=url1)
    # step-3:获取响应数据
    page_text = response.text
    print(page_text)
    # step-4:持久化存储
    with open('./sougou.html','w',encoding='utf-8') as fp:
        fp.write(page_text)
    print("爬取数据结束!")


按照requests的基本流程完成操作。

做一个简单的搜狗搜索的搜集器

import requests

# 实现一个就简单的搜狗网页采集器
# UA检测指 user-anger 表示时发出请求的载体,当服务器检测到载体时爬虫时,会拒绝访问,
# 所以我们需要伪装自己,使用UA伪装,爬虫使用自己浏览器的身份标识去发送请求
if __name__ == "__main__":
    header = {
        'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Mobile Safari/537.36'

    }
    # step-1:指定url,headers 制作请求url以及伪装自己
    url1 = 'https://www.sogou.com/web'
    # 处理url的参数,:封装到字典中
    kw = input('enter a word:')
    param ={
        'query':kw
    }
    #step-2 发起请求:对指定的服务器发起的请求对应的url时携带参数的,并且请求过程中处理了参数

    response = requests.get(url=url1,params=param,headers=header)
	# step-3:获取响应数据
    page_text = response.text
    # step-4:持久化存储
    fileName = kw + ".html"
    #encoding='utf-8'为了使获取的数据中的中文正常显示可读,防止出现乱码
    with open(fileName,'w',encoding='utf-8') as fp:
        fp.write(page_text)
    print(fileName,"保存成功!!!")


这里我们持久化存储中为保证保存后的文件的可读性,添加保存文件的命名规则,自动的存储。

破解一下百度翻译

import requests
import json

# 实现一个就简单的搜狗网页采集器
# UA检测指 user-anger 表示时发出请求的载体,当服务器检测到载体时爬虫时,会拒绝访问,
# 所以我们需要伪装自己,使用UA伪装,爬虫使用自己浏览器的身份标识去发送请求
if __name__ == "__main__":
    post_url = 'https://fanyi.baidu.com/sug'
    header ={
        'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Mobile Safari/537.36'
    }
    kw1 =input("enter a word:")
    data1={
        'kw':kw1
    }
    response = requests.post(url=post_url,data=data1,headers=header)
    # json()方法返回的是一个obj (如果确认响应数据是一个json数据,才能使用json()方法)
    dic_boj = response.json()
    # 要实时的根据抓包数据的响应包反馈的数据类型选择json或text...等等
    print(dic_boj)

    # 持久化存储
    fileName = kw1 +'.json'
    fp = open(fileName,'w',encoding='utf-8')
    json.dump(dic_boj,fp=fp,ensure_ascii=False)

    print('爬取结束!!!')

这里我们需要配合抓包工具配合使用,进行分析定位请求的url ,携带的数据 响应的数据包。
(chrom可以使用F12 调出抓包分析,也可以使用工具fiddler、HTTPAnalyzerFullV7.6.4 、鲨鱼等等专业抓包工具,这里的话我们使用chrom自带的就可以足够使用了。)
chrom自带的 需要定位到network选项,由于翻译网页的时是Ajax的请求类型。所以我们只需要定位XHR的请求响应数据包即可,(所有的话定位比较慢)如下
在这里插入图片描述

在这里插入图片描述
同时我们要对比response 的返回内容来定位具体那个数据包是我们需要的。
携带的data在下面这里就不截图了。

再来一个豆瓣电影抓一下

同样使用抓包工具分析请求地址 类型 data

import requests


if __name__ == "__main__":
    url1 = 'https://movie.douban.com/j/chart/top_list'
    param = {
        'type':'24',
        'interval_id':'100:90',
        'action':'',
        'start':'0',#表示从库中第几部电影去取
        'limit':'100',#表示一次取几个
    }
    header ={
        'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Mobile Safari/537.36'
    }
    response = requests.get(url=url1,params=param,headers=header)

    list_data = response.json()
    # 持久化存储
    fp = open('./douban.json','w',encoding='utf-8')
    json.dump(list_data,fp=fp,ensure_ascii=False)

    print('爬取结束!!!')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值