爬取百度糯米信息——深圳所有甜品店

使用Python网络爬虫技术,通过requests库从百度糯米网站抓取深圳甜品店的详细信息,包括店铺名、评分及人均消费,并将数据整理成结构化格式存储。

最近在看崔庆才的书《Pyhton3网络爬虫开发实战》,学习爬虫。学习了前三章后,将书中的代码执行了一遍,做了第一个爬虫。主要使用requests库,爬取百度糯米网深圳所有甜品店的店铺名、评分和人均消费。

import re
import requests
import json
import time
from requests.exceptions import RequestException
'''网页为https://sz.nuomi.com/880-page1?#j-sort-bar,https://sz.nuomi.com/880-page2?#j-sort-bar...一共有8页,需要分页爬取,偏移量为1'''
def get_one_page(url):
    #获取网页源代码
    try:
        headers = {
            'User-Agent': 'Mozilla/5.0(Macintosh;Intel Mac OS X 10_11_4) AppleWebkit/537.36(KHTNML,like Gecko)Chrome/52.0.2743.116 Safari/537.36'}#请求头
        response = requests.get(url, headers=headers)
        response.encoding='utf-8'
        if response.status_code==200:   #状态码为200,请求成功
            return response.text
        return None
    except RequestException:
        return None

def parse_one_page(html):
    #解析页面
    pattern=re.compile('<li class="shop-infoo-list-item clearfix.*?h3.*?shop-infoo-list-item-title">(.*?)</h3>'+
                       '.*?</span><span class.*?gold.*?style.*?>(.*?)</span>'+
                       '.*?<a href.*?span class.*?target="_blank">.*?item-line-label">(.*?)</span>'+
                       '.*?item-line-label">(.*?)</span>'+
                       '.*?</a>.*?</li>',re.S)      #re.S
    items=re.findall(pattern,html)
    for item in items:
        yield {
            '店铺名':item[0],
            '评分':item[1],
            '人均消费(元)':item[2],
            '地区':item[3]

        }      #遍历提取店铺名,人均消费,评分和地点,将它赋值为一个字典,形成结构化数据



def write_to_file(content):
    with open('百度糯米-甜品店.txt','a',encoding='utf-8') as f:
        f.write(json.dumps(content,ensure_ascii=False)+'\n')

def main(page_number):
    url='https://sz.nuomi.com/880-page'+str(page_number)+'?#j-sort-bar'
    html=get_one_page(url)
    for item in parse_one_page(html):     #访问生成器,以json字典格式写入文件
        print(item)
        write_to_file(item)

if __name__=='__main__':
    for i in range(1,9,1):
        main(page_number=i)
        time.sleep(1)

 

 

总结:

①使用正则表达式匹配后,每个店铺信息以字典的格式存储到一个生成器中,后逐次打印生成器中的内容,由于储存为字典结构,所以每条信息4个键值对无序。

②想爬取Jordan Peterson教授的个人网页的所有podcast信息,网页下拉后会自动加载,网址不变,个人还不知道这种情况下如何爬取,后续会寻找解决方法。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值