• 第四次实验报告


    201912162019-2020-2 《Python程序设计》实验三报告

    课程:《Python程序设计》

    班级: 1912

    姓名: 赵子瑜

    学号:20191216

    实验教师:王志强

    实验日期:2020年6月1日

    必修/选修: 公选课

    1.实验内容

    Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。

    实验要求

    (1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分

    (2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。10分。

    (3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。5分

    2. 实验过程及结果

    创建函数:

    需求功能:发送请求获得返回数据、解析获得数据、输出解析后的数据。

    import requests

    import re

    import time

    def get_comment(itemid):

        i = 1#开始页码

        d = []#构建一个列表用于判断是否继续循环

        lis = []#放置抓取到的内容

        while i:

            #构建循环用的url

            url = 'https://rate.tmall.com/list_detail_rate.htm?itemId={}&order=3&sellerId=1914459560&currentPage={}'.format(itemid,str(i))

            html = requests.get(url).text#获取相关内容的源代码

            pl = re.findall(r'"rateContent":"(.*?)","rateDate"',html)#评论抓取

            dat = re.findall(r'"rateDate":"(.*?)","reply"',html)#评论时间抓取

            if dat == d or pl ==[]:#判断是否重复或者是否存在评论

                print('==============================')

                return lis #跳出循环并返回值

            else:

                try:

                    d = dat#没有重复则将评论时间赋值给d,用于下次循环判断

                except IndexError as e:

                    continue#出现该错误则跳出循环,进行下一次

            print("第%d页评论"%i,pl)#打印评论内容

            lis.append(pl)

            i += 1

            time.sleep(2)#访问间隔

    ————————————————

    运行截图:

    我们这里只需要评论数据,所以,用正则匹配评论部分就可以了!

    然后通过抓到json数据,用正则匹配返回列表,直接抓取整个页面的店铺id

    def get_id(kw='德州扒鸡'):

        '''

        其他只抓了首页44家店铺的,没有抓后面页面,后续需改进

        '''

        url = 'https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&'

              '_ksTS=1529811793535_1018&callback=jsonp1019&q={}&imgfile=&js=1&'

              'stats_click=search_radio_all:1&initiative_id=staobaoz_20180624&'

              'ie=utf8&bcoffset=4&p4ppushleft=1,48'.format(kw)

        html = requests.get(url).text

        id_list = re.findall(r',"auctionNids":[(.*?)],"ifDoufuAuction"',html,re.S)[0]

        return id_list.replace('"','').split(',')

    ————————————————

    3. 实验过程中遇到的问题和解决过程

    问题1:程序运行没有输出。

    问题1解决方案:检查请求状态码,发现状态码为200,能够正常访问。我后来才发现是因为参考的资料为18年之前的资料,淘宝后来增设了一个反爬虫机制。需要想办法去躲开反爬虫机制:

    将上面复制的内容粘贴到https://curl.trillworks.com/,就可以得到headers,使用这个headers就能正常爬取商品信息了。

    课程感想

    通过一学期对python的学习,我对python这门语言有了更加深入的了解。虽然课程比较近,但是还是在课程中学到了一些知识,学会了一些简单的操作,知道了如何去爬虫。

    参考资料

    《常用python爬虫框架整理》

    《Python urllib、urllib2、urllib3用法及区别》

  • 相关阅读:
    c# 类型转换符的重载
    C# 串口读写
    STM32 Keil C++编写单片机程序
    C# 静态构造函数的使用
    MvvMlight 学习之 SimpleIoc
    STM32 之 DMA
    STM32 之 SysTick
    突然发现用PHP做多条件模糊查询很简单
    discuz代码转为html代码
    Discuz!开发之HTML转Discuz代码(bbcode)函数html2bbcode()
  • 原文地址:https://www.cnblogs.com/812521972zzy/p/13254377.html
Copyright © 2020-2023  润新知