爬虫笔记——urllib实战之淘宝零食板块爬取

  如题,此次为urllib爬取淘宝网零食板块的代码,并将其写入txt文件中:

一、进入淘宝网-查看源代码

二、通过源码得出正则表达式

  1. title_pat  =  '"raw_title":"(.*?)",'  
  2. price_pat  =  '"view_price":"(.*?)",'  
  3. loc_pat  =  '"item_loc":"(.*?)",'  
  4. sale_pat  =  '"view_sales":"(.*?)人付款",'  
  5. comment_pat  =  '"comment_count":"(.*?)",' 

三、书写代码进行爬取

扫描二维码关注公众号,回复: 878605 查看本文章
  1. import re  
  2. import urllib.request  
  3. import urllib.error  
  4. import pandas as pd  
  5. from pandas import DataFrame,read_csv  
  6. #设置正则表达式  
  7. title_pat  =  '"raw_title":"(.*?)",'  
  8. price_pat  =  '"view_price":"(.*?)",'  
  9. loc_pat  =  '"item_loc":"(.*?)",'  
  10. sale_pat  =  '"view_sales":"(.*?)人付款",'  
  11. comment_pat  =  '"comment_count":"(.*?)",'  
  12. #设置要进行爬取的网址  
  13. fh=open('./taobao.txt','w')  
  14. #设置搜索关键词  
  15. key  =  '零食'  
  16. key  =  urllib.request.quote(key)  
  17. for i in range(1,101):  
  18.     try:  
  19.         print('正在爬取第'+str(i)+"页")  
  20.         url="http://s.taobao.com/search?q="+key+"&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20180514&ie=utf8&bcoffset=0&ntoffset=6&p4ppushleft=1%2C48&s="+str(i-1)*44  
  21.         #设置报头,封装请求并爬取
  22.         headers=("user-agent",'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36')  
  23.         opener=urllib.request.build_opener()  
  24.         opener.addheaders=[headers]  
  25.         urllib.request.install_opener(opener)  
  26.         req=urllib.request.Request(url)  
  27.         data=urllib.request.urlopen(req).read().decode('utf-8','ignore')  
  28.         #提取title、price、location、sale、comment
  29.         title=re.compile(title_pat).findall(data)  
  30.         price=re.compile(price_pat).findall(data)  
  31.         loc=re.compile(loc_pat).findall(data)  
  32.         sale=re.compile(sale_pat).findall(data)  
  33.         comment=re.compile(comment_pat).findall(data)
  34.         #写入文件  
  35.         mydata=list(zip(title,price,loc,sale,comment))  
  36.         mydataf=pd.DataFrame(data=mydata)  
  37.         fh.write(str(mydataf))  
  38.     except urllib.error.URLError as e:   #抓取异常并输出
  39.         print('第'+str(i)+'页爬取失败')  
  40.         if hasattr(e,'reason'):  
  41.             print(e.reason)  
  42.         if hasattr(e,'code'):  
  43.             print(e.code)  
  44.     print('第'+str(i)+'页爬取成功')  
  45. fh.close() 



四、总结

  此次urllib实战让我对python的爬虫有了更加深刻的了解。写代码的过程中多次受阻,在此记下:

        1、写代码需要有一个清晰的逻辑,清楚自己每一步的目的

      2、设置正则表达式、url时何时应该增加引号,何时不能添加,写for循环等功能后需要添加“:”,需要注意缩进,这些都需要经过实践才能清楚自己的不足

        3、写入文件时多次出现错误,主要还是对python的各种功能还不够了解,因此,还需要多加练习

  不管如何,所有困难一一克服,尽管还有许多细节没有优化好,但这终究是一件令人感到愉悦的事啊~~ 

                                                                                                                   ——戊戌年丁巳月丁未日记

猜你喜欢

转载自blog.csdn.net/fuyou_/article/details/80317975