首页 > 其他 > 详细

爬虫实例系列一(requests)

时间:2019-02-26 15:30:21      阅读:163      评论:0      收藏:0      [点我收藏+]

一 爬虫简介

‘‘‘
爬虫:通过编写程序,模拟浏览器上网,让其去互联网上爬取数据的过程

分类:
通用爬虫:爬取全部的页面数据
聚焦爬虫:抓取页面中局部数据
增量式爬虫:爬取网站中更新出的数据

反爬机制:门户网站会通过制定相关的技术手段,组织爬虫程序进行数据获取
反反爬策略:针对反爬机制制定的策略,为了获取数据

第一个反爬机制:
robots.txt协议:防君子不防小人的协议
‘‘‘

 

二  request 入门使用流程

 

‘‘‘

request使用流程:
- 制定url
- 发起请求
- 获取响应回来的页面数据
- 持久化存储

‘‘‘

三 实例

 

1 获取搜狗页面(反反爬机制:防君子不防小人)

import requests

#获取搜狗页面数据

#1.指定url
url=https://www.sogo.com/

#2.发起请求
response=requests.get(url=url)

#3.获取页面数据
response_text=response.text

#4.持久化存储
with open(sogo.html,mode=w,encoding=utf8) as f:
    f.write(response_text)

 

2 获取知乎页面数据(UA伪装)

 

‘‘‘
User-Agent:请求载体的身份标识
反爬机制:UA检测
反反爬策略:UA伪装
‘‘‘
#请求知乎

url=https://www.zhihu.com/

#指定请求头,进行UA伪装
headers={
    user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36
}
response=requests.get(url=url,headers=headers)

print(response.text)

 

3 post请求实例(请求百度翻译结果)

技术分享图片

 

#请求百度翻译结果

#经过分析发现,百度翻译发送的请求是ajax请求

 

import requests

url=https://fanyi.baidu.com/sug

#指定请求头,进行UA伪装
headers={
    user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36
}

#搜索数据不要写死

kw=input(input a word:)
#构建请求数据
data={
    kw:kw
}

response=requests.post(url=url,headers=headers,data=data)

print(response.json())

 

4 post 请求携带更多参数data={}

技术分享图片

技术分享图片

 

#爬取城市肯德基餐厅的位置信息 http://www.kfc.com.cn/kfccda/storelist/index.aspx

‘‘‘
抓包获取的数据
Request URL: http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword
Request Method: POST
Status Code: 200 OK
Remote Address: 120.92.131.8:80
Referrer Policy: no-referrer-when-downgrade
‘‘‘

import requests

url=http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword

headers={
    user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36
}

data={
    cname:‘‘,
    pid:‘‘,
    keyword: 深圳,
    pageIndex: 3,
    pageSize: 10,
}

response=requests.post(url=url,headers=headers,data=data)

print(response.json())

 

5 爬取豆瓣电影中的详细数据(ajax请求)

import requests

#爬取豆瓣电影中的详细数据(ajax请求)

#‘https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=20&limit=20‘

url=https://movie.douban.com/j/chart/top_list

headers={
    user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36
}
#此处参数已经写死,后续项目中在此基础修改
params={
    type: 24,
    interval_id: 100:90,
    action:‘‘,
    start:40,
    limit:20,
}

response=requests.get(url=url,headers=headers,params=params)

print(response.json())

 

 

 

 




爬虫实例系列一(requests)

原文:https://www.cnblogs.com/angle6-liu/p/10437482.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!