简单爬虫的理解应用,简单爬虫的例子

简单爬虫的理解应用

爬虫:通过模拟浏览器进行上网,去网络上抓取数据的过程
爬虫广义分为:通用爬虫、聚焦爬虫
通过requests模块实## 简单的爬虫应用
爬虫:通过模拟浏览器进行上网,去网络上抓取数据的过程
爬虫广义分为:通用爬虫、聚焦爬虫
通过requests模块实现模拟浏览器发起的请求数据
requests的编码流程:

  • 指定页面的url
  • 发起请求:get post
  • 获取响应的数据
  • 存储在相应的文件或者内存中

get请求

requests.get(url,params,headers)

post请求

requests.post(url,data,headers)
请求参数动态化变化现模拟浏览器发起的请求数据
requests的编码流程:

  • 指定页面的url
  • 发起请求:get post
  • 获取响应的数据
  • 存储在相应的文件或者内存中

get请求

requests.get(url,params,headers)

post请求

requests.post(url,data,headers)

请求参数动态化变化

很多的情况下需要修改请求的参数,可以将请求的参数封装在一个字典中(键值对==请求参数),将字典作用到get的params和post的data参数中去,进行动态的参数的修改。如下代码所示,爬取的是搜狗的主页部分

# import requests
# url = 'https://www.sogou.com/web'
# #实现参数动态化
# wd = input("enter a key")
# params = {
#     'query':wd
# }
# res = requests.get(url = url,params=params)
# page_text = res.text
# filename = wd+ '.html'
# with open(filename,'w',encoding='utf-8') as fp:
#     fp.write(page_text)

常见的反扒机制UA检测:

  • UA:网站进行请求身份的识别表示,服务器需要通过识别请求的UA来进行身份的识别,判断是否是爬虫请求还是浏览器请求。

  • 反反扒策略:通过设置headers标签中的user-agent来进行UA的伪装,并且将封装的headers内容作为参数添加到请求中去

    # headers = {
    #     'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
    # }
    

    如何针对一个陌生的网站进行爬取

    • 判断这个网站所需要的数据是否是动态加载的
      • ​ 是:通过抓包进行全局的搜索,找到所需数据请求的url呵呵请求参数信息,进行聚焦爬虫的请求
      • 不是:直接将网址作为我们需要requests请求的url即可
案例

抓取搜狗的主界面

# #简单的通用爬虫
# import requests
# url = 'https://www.sogou.com/'
# response = requests.get(url = url)
# page_text = response.text
# with open('sougou.html','w',encoding='utf-8') as fp:
#     fp.write(page_text)

定向抓取内容

# import requests
# url = 'https://www.sogou.com/web'
# #实现参数动态化
# wd = input("enter a key")
# params = {
#     'query':wd
# }
# res = requests.get(url = url,params=params)
# page_text = res.text
# filename = wd+ '.html'
# with open(filename,'w',encoding='utf-8') as fp:
#     fp.write(page_text)

UA反反扒,解决部分乱码问题

# import requests
# url = 'https://www.sogou.com/web'
# #实现参数动态化
# wd = input("enter a key")
# params = {
#     'query':wd
# }
# headers = {
#     'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
# }

# res = requests.get(url = url,params=params,headers = headers)
# res.encoding = 'utf-8' #修改响应数据的编码格式
# page_text = res.text
# filename = wd+ '.html'
# with open(filename,'w',encoding='utf-8') as fp:
#     fp.write(page_text)

抓取豆瓣的中电影详情数据的内容

# import requests
# url = 'https://movie.douban.com/j/chart/top_list?type=13&interval_id=100%3A90&action=&start=20&limit=10'
# headers = {
#      'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
# }
# res = requests.get(url=url,headers=headers)
# page_text = res.json()  #序列化好的对象
# for dic in page_text:
#     print(dic['title'],dic['score'])

肯德基餐厅查询详情的内容

# url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
# for page in range(1,3):
#     dic = {
#         'cname': '',
#         'pid': '',
#         'keyword': '北京',
#         'pageIndex': str(page),
#         'pageSize': '10'
#     }
#     res = requests.post(url=url,headers=headers,data=dic)
#     print(res.json())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值