python selenium 大众点评餐厅信息+用户评论 爬虫

这次爬取的目标是大众点评里餐厅的信息以及用户的评论。
大众点评的反爬内容比较丰富,这里也只是记录了如何通过selenium模拟访问大众点评,以及大众点评的woff文件构建字典并对加密文字进行替换。

目标url='http://www.dianping.com/shop/G7RgscHLjDjXY9hg'

进入目标网页,对我们想要的商店名进行分析,发现它在开发者工具与页面显示的并不一样,
同时发现这个字体的"font-family"属性为’PingFangSC-Regular-address’。
在这里插入图片描述
继续分析其他加密字体,可以发现这样一个规律:

不同位置有不同font-family:
()中文:PingFangSC-Regular-address
()数字:PingFangSC-Regular-num
(顾客)评价:PingFangSC-Regular-review
()营业时间 数字:PingFangSC-Regular-hours 
()营业时间 中文:PingFangSC-Regular-shopdesc 
推荐菜:PingFangSC-Regular-dishname

同时可以注意到:加密的字中都有一个相同的css地址,如上图箭头所指。

http://s3plus.meituan.net/v1/mss_0a06a471f9514fc79c981b5466f56b91/svgtextcss/73c76f0d91f3b846605b9aa7a7cfc6e8.css

转到链接所指向的网页地址,可以发现该文件是以这样的形式构成的:
这样的结构正好有6个,与上文分析的数目相同。

@font-face {
   
    font-family: "PingFangSC-Regular-xxxxxx";
    src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/xxxx.eot");
    src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/xxxxx.eot?#iefix") format("embedded-opentype"),url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/xxxxx.woff");
}
.dishname {
   
    font-family: 'PingFangSC-Regular-xxxxx';
}

其中的.woff文件就是我们要用来解密的字体文件,下载字体文件并通过
http://blog.luckly-mjw.cn/tool-show/iconfont-preview/index.html
网址在线预览一下:(这里以adders为例,每天的字体文件可能不同,仅做示范)


请添加图片描述

可以到网页中加密的文字的Unicode编码能与woff文件中的“吉”对应,因此只要利用woff文生成一个字典,就能通过字典替换得到真正的文字了。

因此 编写爬虫的基本思路为:
1.获取网页内容
2.获得带有woff文件地址的css文件
3.对css文件发起请求得到woff文件的地址
4.分别对woff文件的地址发起请求,得到所有的woff文件
5.利用woff文件生成字典
6.利用字典解密,并保存得到的数据

引用的库

import requests
from lxml import etree
from selenium import webdriver
import time
import numpy
import re
from fontTools.ttLib import TTFont  # 解析字体文件的包
from PIL import Image, ImageDraw, ImageFont  #绘制图片
from selenium.webdriver.chrome.options import Options
from aip import AipOcr
import os

获取网页内容

url='http://www.dianping.com/shop/G7RgscHLjDjXY9hg'
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
wb=webdriver.Chrome(options=options)
wb.get(url)
re_text=wb.page_source

#数据读取并保存
dz=DZDP_HTML(re_text=re_text)
dc=dz.dict_dict#传入总字典
tree=etree.HTML(re_text)
data=get_datas_by_xpath(tree,
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值