python爬虫爬取大众点评店铺简介信息
程序员文章站
2022-03-02 19:37:37
...
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取****,电子书籍,以及课程的源代码!
QQ群:961562169
写作目的:
今天帮朋友一个忙,要爬取一些大众点评上的数据。结果发现大众点评的防爬机制还挺多的,记录一下自己踩的坑。
爬取目标
主要是通过分类和地区爬取店铺简介中的名称,地址,人均价格,各种评价分数和评价数
大众点评的保护机制
主要有两点
1.源码里加入了css反爬机制,主要是字体加密
2.对IP地址的限制,程序自动爬取大概十几页会断一下,目测应该是大众限制了一段时间内单IP访问量不能突破某一阈值。不过因为是爬取简介页面,所以手动验证一下也可以,没有像爬具体页面那样的封IP,有条件的也可以用IP池换IP访问。
应对方法
**css加密机制参考了Python爬虫如何**css加密
根据这篇文章建立字典后,对源码中的加密字符进行替换,然后通过正则匹配得到自己想要的部分
tree=etree.HTML(rep)
li_list=tree.xpath('//div[@class="content"]/div/ul/li')
for li in li_list:
title = li.xpath('.//div[@class="tit"]/a/h4/text()')[0]
tag = li.xpath('string(.//div[@class="tag-addr"]/a/span)')
score = li.xpath(
'string(.//div[@class="star_score score_50 star_score_sml"]/text()|.//div[@class="star_score score_40 star_score_sml"]/text()|.//div[@class="star_score score_45 star_score_sml"]/text())')
comments = li.xpath('string(.//div[@class="comment"]/a[@class="review-num"]/b)')
prize = li.xpath('string(.//div[@class="comment"]/a[@class="mean-price"]/b)')
address = li.xpath('string(.//div[@class="tag-addr"]/a[@data-click-name="shop_tag_region_click"]/span)')
localaddress = li.xpath('string(.//div[@class="tag-addr"]/span)')
flavor = li.xpath('string(.//div[@class="txt"]/span[@class="comment-list"]/span[position()=1])')
environment = li.xpath('string(.//div[@class="txt"]/span[@class="comment-list"]/span[position()=2])')
service = li.xpath('string(.//div[@class="txt"]/span[@class="comment-list"]/span[position()=3])')
print(title, tag, score, comments, prize, address, localaddress, flavor, environment, service)
with open('大众广州日料.csv', 'a', encoding='utf-8-sig', newline='') as f:
writer = csv.writer(f, dialect='excel')
writer.writerow([title, tag, score, comments, prize, address, localaddress, flavor, environment, service])
还存在的问题
woff 文件里有的文字数据和顺序都一样,但每个字对应的unicode 码不一样,所以用直接建立的字典会有些错误,想办法完善一下再放出完整代码。
上一篇: 大众点评之线程池实现全站爬取
下一篇: python基础day03
推荐阅读
-
通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息
-
神箭手云爬虫-爬取携程【国际】航班/机票信息-利用python解析返回的json文件将信息存储进Mysql数据库
-
Python爬虫爬取淘宝,京东商品信息
-
python3爬虫-通过selenium登陆拉钩,爬取职位信息
-
Python爬虫实战之爬取某宝男装信息
-
Python爬虫实战用 BeautifulSoup 爬取电影网站信息
-
Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)
-
网易云歌单信息爬取及数据分析(python爬虫)
-
Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取
-
Python爬虫实战用 BeautifulSoup 爬取电影网站信息