反爬虫机制与反爬虫技术(三)





在之前的文章中,我们详细介绍了反爬虫机制与反爬虫技术及应用。其中,页面登录除了使用Selenium自动化外,还可以直接使用Cookie。下面将以大众点评(美团)美食类店铺信息爬取为例介绍

1、数据来源


大众点评网:https://www.dianping.com/

在这里插入图片描述

在这里插入图片描述
数据来源:大众点评沈阳美食热门商区智能排序店铺信息(可自定义地区及分类维度)

在这里插入图片描述
在该页面下面可以看到,店铺数据是分页显示的

在这里插入图片描述
如果点击某个店铺,将会跳转到该店铺对应的详情页

在这里插入图片描述

2、爬取目标


本次我们爬取的目标包括:

3、网页分析


经过分析,我们发现,数据形式为HTML,其中,店铺信息页数据主要嵌入在ul-li标签中

在这里插入图片描述
点击其它页面,观察浏览器地址栏URL显示:

由此可得,爬取店铺信息前10页数据的URL如下:

# 爬取前10页
urls = [f'https://www.dianping.com/shenyang/ch10/p{
     str(i+1)}' for i in range(10)]

点击第一个店铺,跳转到店铺详情页,店铺详情数据则位于某个div模块中

在这里插入图片描述
店铺详情页对应的URL可在店铺信息页每个ul-li标签中找到

4、抓取与解析


4.1、抓取方案

由于大众点评网的登录强制使用扫码或手机验证码登录,且需要输入内容验证码,这对于Selenium库来说是一个挑战。因此,这里我们选择手动登录后从浏览器Headers中获取Cookie进而发送请求

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
获取Cookie登录信息的步骤如下:

  • 打开目标网站:https://www.dianping.com/,然后手动登录
  • 进入浏览器开发者工具=>检查=>网络/Network=>Doc(非Fetch/XHR)
  • 点击浏览器刷新按钮,‌在出现的请求中找到第一个接口并点击进入
  • 在Headers中的Request Headers下可找到Cookie登录的信息
  • 将Request Headers中的内容复制到代码中的Headers中(注意添加单引号)

如下图所示:

在这里插入图片描述

在这里插入图片描述
4.2、环境准备

导入所需库,并准备代理IP池以及按4.1获取浏览器登录Cookie(Headers信息)

import pandas as pd
import requests
from bs4 import BeautifulSoup
import re
import random
import time

# 免费代理IP
proxies = [
    {
   'http': '183.95.80.102:8080'},
    {
   'http': '123.160.31.71:8080'},
    {
   'http': '115.231.128.79:8080'},
    {
   'http': '166.111.77.32:80'},
    {
   'http': '43.240.138.31:8080'},
    {
   'http': '218.201.98.196:3128'},
    {
   'http': '112.115.57.20:3128'},
    {
   'http': '121.41.171.223:3128'}
]
# proxies = [
#     'http://183.95.80.102:8080',
#     'http://123.160.31.71:8080',
#     'http://115.231.128.79:8080',
#     'http://166.111.77.32:80',
#     'http://43.240.138.31:8080',
#     'http://218.201.98.196:3128',
#     'http://112.115.57.20:3128',
#     'http://121.41.171.223:3128'
# ]

# 获取浏览器登录Cookie(Headers信息)
headers = {
   
    <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值