Python爬虫学习日志(8)

实例2:当当网商品信息的定向爬虫

  • 编写爬虫
    • 1.功能描述
          • 在当当网站搜索关键词“东野圭吾”
    • 2.程序的结构设计
          • 操作步骤
          • 源代码
    • 3.存在的问题

编写爬虫

1.功能描述

(淘宝网的爬取必须要模拟用户登录)

  • 目标:获取当当搜索页面的信息,提取其中的商品名称和价格。
  • 理解:当当网的搜索接口,翻页的处理。
  • 技术路线:requests-re
在当当网站搜索关键词“东野圭吾”
  • 观察网址变化
    Python爬虫学习日志(8)_第1张图片

  • 起始页 http://search.dangdang.com/?key=东野圭吾&act=input

  • 第二页 http://search.dangdang.com/?key=东野圭吾&act=input&page_index=2

  • 第三页 http://search.dangdang.com/?key=东野圭吾&act=input&page_index=3

2.程序的结构设计

操作步骤

(爬取网站时,首先要查看网站的robots协议,在allow的情况下,才可以爬取。本例中,爬取网页仅作学习之用,且为类人行为。)

  1. 提交商品的搜索请求,循环获取页面。
  2. 对于每个页面,提取商品名称和价格信息。
  3. 将信息输出到屏幕上。
  • 商品名称和价格的查找
    Python爬虫学习日志(8)_第2张图片
    Python爬虫学习日志(8)_第3张图片
源代码
  • 重点是正则表达式的应用
import requests
import re

def getHTMLText(url):
    try:
        r = requests.get(url, timeout= 30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

#获取商品的名称和价格,使用正则表达式(lt = list)
def parsePage(ilt, html):
    try:
        plt = re.findall(r'span.*?search_now_price.*?>(.*?)<', html)#正则表达式
        tlt = re.findall(r'li.*?p.*?name.*?, html)
        for i in range(len(plt)):
            # eval函数可以将获得的键值对中最外层的双引号或单引号去掉
            #split函数使用‘:’分割字符串,获得键值对的后半部分
            price = plt[i].split(';')[1]
            title = tlt[i].split(' ')[1]#以空格分割,字符串首字符为空格,所以文字部分在[1]处
            ilt.append([price, title])
    except:
        print("")

def printGoods(ilt):
    tplt = "{:4}\t{:8}\t{:16}"#tplt=typelist 用槽函数设置打印格式,三列,间隔分别为4,8,16
    print(tplt.format("序号", "价格", "商品名称"))
    count = 0
    for g in ilt:
        count = count + 1
        print(tplt.format(count, g[0], g[1]))

def main():
    goods = '东野圭吾'
    depth = 2
    start_url = "http://search.dangdang.com/?key=" + goods
    infoList = []
    for i in range(depth):
        try:
            url =  start_url + '&page_index=' + str(i+1) #3页
            html = getHTMLText(url)
            parsePage(infoList, html)
        except:
            continue #解析页面出问题时,继续下个页面,不影响整个程序的运行
    printGoods(infoList)

print(main())

输出结果:

序号  	价格      	商品名称            
   1	79.50   	东野圭吾四大推理套装(共4册) 
   2	27.30   	东野圭吾:恶意(2016版,东野圭吾四大杰作之一)
   3	31.00   	东野圭吾新作:魔力的胎动(限量东野圭吾印签版本)
   4	41.10   	东野圭吾:白夜行(易烊千玺、孟非推荐,东野圭吾作品无冕之王)
   5	24.70   	东野圭吾:悲剧人偶       
   6	22.50   	东野圭吾:假面山庄(东野圭吾烧脑长篇)
   7	17.50   	东野圭吾:空中杀人现场     
   8	49.50   	东野圭吾:预知梦(《嫌疑人X的献身》系列作,日文版销量超100万册)
   9	24.00   	东野圭吾:天使之耳       
  10	24.70   	东野圭吾:侦探伽利略      
  11	24.70   	东野圭吾:只差一个谎言     
  12	24.70   	东野圭吾:禁断的魔术(《嫌疑人X的献身》系列全新长篇小说,李现推荐)
  13	29.50   	东野圭吾:盛夏方程式(《嫌疑人X的献身》系列长篇小说)
  14	24.70   	东野圭吾:毕业(《恶意》系列开篇之作)
  15	24.20   	东野圭吾:嫌疑人X的献身(王凯、张鲁一推荐,至为纯粹的爱情,绝好的诡计)
  16	35.50   	放学后(东野圭吾成名作)    
  17	39.00   	东野圭吾新作:白金数据(凶手,竟然是我自己?!)
  18	17.50   	东野圭吾:变身         
  19	22.50   	秘密              
  20	31.20   	东野圭吾:时生(东野圭吾暖心力作)
  21	27.50   	东野圭吾:我杀了他(精装版)  
  22	19.70   	新参者(2016版)      
  23	24.70   	东野圭吾:沉睡的森林      
  24	22.50   	圣女的救济(东野圭吾经典长篇小说)
  25	19.70   	红手指(2016版)      
  26	22.50   	东野圭吾:名侦探的咒缚     
  27	29.80   	幻夜              
  28	27.30   	东野圭吾:解忧杂货店(胡歌、王俊凯、刘昊然倾情推荐,东野圭吾长篇小说代表作,这家店帮你找回内心流失的东西)
  29	19.70   	祈祷落幕时           
  30	65.40   	东野圭吾作品:假面之夜+假面饭店+假面前夜(套装共3册)独家附赠精美手账
  31	24.70   	谁杀了她(2018精装版)   
  32	22.50   	流星之绊            
  33	24.70   	黎明之街(东野圭吾极具突破性的经典长篇小说)
  34	29.00   	东野圭吾:魔球         
  35	22.50   	东野圭吾全新力作:危险的维纳斯(反转再反转,但反转的是故事,还是人心?《恶意》之后,再次揭露人性的弱点。)
  36	141.50  	东野圭吾神探伽利略小说集(套装共6册)
  37	19.70   	分身(2016版)(天王作家东野圭吾写尽人性的黑暗与美丽)
  38	24.70   	东野圭吾:超杀人事件      
  39	19.70   	麒麟之翼(东野圭吾“加贺探案集”经典
  40	19.50   	东野圭吾作品:白马山庄谜案(2018年新版)
  41	37.00   	拉普拉斯的魔女         
  42	96.70   	东野圭吾笑的世界(全4册)   
  43	24.50   	东野圭吾:布谷鸟的蛋      
  44	54.40   	东野圭吾作品:天使之耳+第十年的情人节(套装共2册)(精装)
  45	19.20   	东野圭吾作品湖畔        
  46	19.70   	彷徨之刃            
  47	17.50   	大雪中的山庄:东野圭吾用悬念照彻人性
  48	22.50   	东野圭吾:怪笑小说(2018版)
  49	17.50   	东野圭吾:我的晃荡的青春(东野圭吾自传)
  50	19.70   	名侦探的守则          
  51	22.50   	伽利略的苦恼:《嫌疑人X的献身》之后的故事
  52	17.50   	东野圭吾作品:怪人们(2018年新版)
  53	19.50   	东野圭吾作品:没有凶手的暗夜(2018年新版)
  54	39.10   	东野圭吾:学生街的日子     
  55	37.80   	东野圭吾作品:假面饭店(新修珍藏版)+假面前夜
  56	29.00   	东野圭吾:平行世界爱情故事   
  57	16.00   	宿命              
  58	96.80   	东野圭吾四大经典小说(套装共4册)
  59	19.70   	造彩虹的人:东野圭吾长篇小说,中文简体首次出版
  60	22.50   	东野圭吾:再见了,忍老师    
  61	24.70   	东野圭吾:毒笑小说(2018版)
  62	12.00   	草枕:东野圭吾译者刘子倩倾情翻译
  63	17.50   	东野圭吾作品:梦回都灵(2018年新版)
  64	18.90   	假面饭店(东野圭吾出道25周年纪念珍藏版)
  65	20.60   	沉睡的人鱼之家         
  66	14.00   	东野圭吾:平行世界・爱情故事(东野圭吾悬疑经典:将爱情与超现实完美结合!)
  67	17.50   	布鲁特斯的心脏         
  68	16.00   	侦探俱乐部(东野圭吾经典本格推理小说合集)
  69	15.70   	疾风回旋曲(东野圭吾力作!热销100万册,拿起就无法放下的阅读体验。继《白夜行》《嫌疑人X的献身》后再度挑战逻辑极限。
  70	17.50   	浪花少年侦探团         
  71	19.70   	东野圭吾:杀人之门       
  72	17.50   	魔球              
  73	19.75   	东野圭吾:我的老师是侦探    
  74	19.70   	悖论13            
  75	18.10   	恋爱的贡多拉(东野圭吾新作,与众不同的恋爱推理:你以为的天作之合,也许只是同床异梦)
  76	88.70   	学生必读东野圭吾推理套装(全4册)
  77	16.00   	美丽的凶器           
  78	24.70   	从前我死去的家         
  79	18.20   	同级生             
  80	27.60   	假面之夜(东野圭吾新作,假面系列第3弹!)
  81	18.90   	风雪追击            
  82	72.90   	东野圭吾经典三册套装:《白金数据》《拉普拉斯的魔女》《沉睡的人鱼之家》
  83	17.50   	东野圭吾:鸟人计划       
  84	18.90   	假面前夜(东野圭吾新作,假面系列第2弹!)
  85	23.70   	虚无的十字架(2018版)   
  86	52.70   	现代推理馆东野圭吾系列套装(全三册)
  87	21.00   	单恋(2016版)       
  88	19.70   	天空之蜂            
  89	14.70   	酷酷的代课老师         
  90	28.10   	东野圭吾作品:绑架游戏(东野圭吾颇具代表性的绑架推理,其创新之处并不在于“绑架”,而在“游戏”)
  91	29.50   	天使之耳:交通警察之夜(精装版)
  92	24.30   	没有凶手的杀人夜(2018新版)
  93	18.50   	使命与魂的尽头         
  94	24.70   	东野圭吾:黑笑小说(2018版)
  95	23.30   	白马山庄杀人事件(2018新版)
  96	25.20   	科学?             
  97	112.80  	东野圭吾“全能”套装(全四册) 
  98	24.60   	东野圭吾:推理之王       
  99	74.00   	东野圭吾基石四部曲(套装共4册)(揭秘东野圭吾成为推理天王的四个阶段:冒险―坚定―怀疑―浪漫)
 100	16.00   	东野圭吾:毒笑小说       
 101	24.70   	东野圭吾:歪笑小说(2018版)
 102	26.70   	东野圭吾            
 103	22.70   	东野圭吾:黎明之街       
 104	27.50   	挑战(东野圭吾作品・精装)   
 105	29.80   	那时的某人(东野圭吾中短篇小说集)
 106	25.00   	第十年的情人节(精装)     
 107	20.80   	使命与魂的尽头(东野圭吾:手术刀下是不共戴天的仇人,你是让他死,还是让他活?)
 108	21.40   	梦回都灵(2018新版)    
 109	116.40  	东野圭吾经典套装(全四册)   
 110	21.40   	怪人们(2018新版)     
 111	98.90   	东野圭吾作品(套装共5册)   
 112	16.20   	东野圭吾:空中杀人现场(万米高空中的惊险之旅)
 113	19.10   	东野圭吾:怪笑小说       
 114	59.70   	东野圭吾            
 115	26.30   	圣诞妈妈            
 116	86.70   	日本当代小说四大杰作(新经典严选,套装共4册)
 117	16.00   	黑笑小说            
 118	94.41   	东野圭吾作品          
 119	88.00   	东野圭吾加贺探案精选集:红手指+新参者+麒麟之翼+祈祷落幕时(共4册)推理悬疑恐怖惊悚小说畅销书籍排行榜解忧杂货店白夜

3.存在的问题

  • 视频中爬取淘宝商品的实例,现在已不可用,需要模拟登录才可以。
  • 京东商品的翻页涉及动态数据,以后再研究。
  • 此次爬取当当网可以很好运行,且翻页设计简单。
  • 对原有正则表达式进行了修改,参考了《Python3 网络爬虫开发实战》一书中关于正则表达式的讲解,可能还有更简洁的写法,后续研究清楚再补充。

你可能感兴趣的:(Python爬虫基础教程)