Python实战计划——第二节:爬取商品信息

视频重点####

练习代码####

总结#####

1. 视频重点###

  1. 解析网页soup = Beautifulsoup('html','lxml')Beautifulsoup只认css selector的写法xpatch是表示元素绝对路径的方法

  2. 描述要爬取元素的位置select到了一类信息放入了列表,之后要for循环释放这些位置信息

  3. 释放爬取标签的信息get_text()方法能获取标签中的文本信息,get()方法来获得标签中的属性信息,比如<img src='#'>中的链接信息。用zip()函数搭配for循环,将所有信息装入字典中。stripped_string获取父节点下所有子节点的文本信息。

2. 练习代码###

from bs4 import BeautifulSoup
    
    with open('F:/Plan-for-combating-master/week1/1_2/1_2answer_of_homework/index.html','r') as wb_data:
        soup = BeautifulSoup(wb_data,'lxml')
        imgs = soup.select('body > div > div > div.col-md-9 > div > div > div > img')
        titles = soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4 > a ')
        prices = soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4.pull-right')
        rates1=soup.find_all('span', class_='glyphicon')  #find_all()方法,class因为是关键字,在使用css selector时用class_
        views=soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right')
        rates= rates1[2:]。#rates1列表中前两个不是星级,去掉前两个存到rates列表中。
        str_rates=[] #创建了一个存放将rates元素字符串化后的列表,因为在之后使用list.count()是,元素包含关键字。
        stars=[]#存放一个商品星级的列表
        nums=[]

        for i in rates:#此迭代将元素字符串化
            str_rates.append(str(i))

        while len(str_rates)!=0:#此循环借鉴课程的参考,del 选出的五个元素,配合while循环,将全部星级按五个一组分好,list.count()统计实心星的个数。
            stars=str_rates[0:5]
            star=stars.count('<span class="glyphicon glyphicon-star"></span>')
            nums.append(star)
            del str_rates[0:5]
    
    
    for img,title,price,view,num in zip(imgs,titles,prices,views,nums):#释放抓取的信息,并作结构化处理,存入data字典中。
        data={
            'title':title.get_text(),
            'price':price.get_text(),
            'view':view.get_text().split()[0],#view.get_text()的信息包含"views",去掉
            'img':img.get('src'),
            'num':str(num)+"星"
        }
        print(data)

结果##

运行结果.png

3. 总结###

  • 序列结构的数据

与序列有关的内建函数有:sorted()、reversed()、enumerate()、zip()),其中sorted()和zip()返回一个序列(列表)对象,reversed()、enumerate()返回一个迭代器(类似序列)
与序列有关的操作方法有:max(),min(),len(),+,*,切片,查询成员资格成员in序列,查询索引list[2]
for循环遍历整个可迭代对象

  • 切片

对于序列结构的数据,切片比如列表list[A:B:C],A表示起始位置,默认是0。B表示结束位置,C表示步长。
AB就是索引,索引和步长都有负值。正序表示时,第B个元素是取不到的。
负步长可以用作倒序取值。相比reverse,它不会改变数据结构。

负步长与reverse倒序区别.png

  • 计数

list.count(元素)

find() 和 find_all()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 两本不错的书: 《Python参考手册》:对Python各个标准模块,特性介绍的比较详细。 《Python核心编程...
    静熙老师哈哈哈阅读 3,356评论 0 80
  • 套接字编程:1、 函数的功能基本和c类似,唯一不同的地方在于当发生错误时,它不是通过返回值来告知的,而是通过触发异...
    静熙老师哈哈哈阅读 659评论 0 11
  • 输出结果: 每个商品的信息存入字典,使用列表保存所有商品信息 作业 github 地址 功能,获取: 图片地址 价...
    超net阅读 616评论 0 1
  • 1、打印:print(100000) print("字符串输出") 2、获取输入:input("输入提示:") 3...
    annyecho阅读 865评论 0 0
  • 1 阿鱼是个没有心的人,阿鱼妈妈如是说。 但阿鱼并不认同,但对只有小学文化水平的鱼妈说出这样文艺伤感的话有些惊讶。...
    倾黛阅读 232评论 0 0