利用Python爬虫爬取京东商品的简要信息

  本文适合有一定Python基础的同学学习Python爬虫,无基础请点击:慕课网——Python入门
  申明:实例的主体框架来自于慕课网——Python开发简单爬虫

  语言:Python2

  IDE:VScode

二、何为爬虫

  传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,然后下载队列中的URL地址对应的网页。解析后抓取网页内容,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。同时,它还会根据一定的搜索策略获取我们所需的信息并保存下来。最后为了展示我们爬到的数据,往往还会用HTML的表格或记事本保存我们所需要的数据。
  简单来说,爬虫就是一门用来从互联网上自动获取我们所需数据的技术。

三、JD商品详情页的网页分析

  入口URL选择为JD某商品详情页:https://item.jd.com/4224129.html

  我们需要分析的内容主要有:

  3.1详情页上指向的其他URL

    我们打开https://item.jd.com/4224129.html,发现网页上还有很多指向其他商品的链接。

    

利用Python爬虫爬取京东商品的简要信息

    

利用Python爬虫爬取京东商品的简要信息

利用Python爬虫爬取京东商品的简要信息

利用Python爬虫爬取京东商品的简要信息

    通过鼠标右键,查看元素,我们可以发现商品页面上的以上链接均为以下格式: //item.jd.com/数字.html

    

利用Python爬虫爬取京东商品的简要信息

    分析到此,我们就知道抓取网页内容时,从当前页面上抽取新的URL的方法了。

 

  3.2商品名称、价格

  同理,我们在商品名称和价格处点击鼠标右键查看元素

  

利用Python爬虫爬取京东商品的简要信息

      

利用Python爬虫爬取京东商品的简要信息


四、简单爬虫框架

  1.爬虫总调度程序

    即我们的main文件,以入口URL为参数爬取所有相关页面
    
  2.URL管理器

    维护待爬取和已爬取的URL列表


  3.HTML下载器

    主要功能是下载指定的url,这里用到了urllib2

  4.HTML解析器
    主要功能是获取网页上所需的URL和内容,用到BeautifulSoup

    正则表达式的基础知识可以参见

    re模块(正则表达式) - 人生不如戏 - 博客园

    另外安利一个网站,在写正则表达式的时候可以先测试,很实用

    正则表达式在线测试


  5.输出程序

    将爬取到的数据写入HTML文件中,利用HTML的table展示

五、源码

  1.爬虫总调度程序

import url_manager, html_downloader, html_parser, html_outputer class SpiderMain(object): def __init__(self): self.urls = url_manager.UrlManager() self.downloader = html_downloader.Html_DownloaDer() self.parser = html_parser.HtmlParser() self.outputer = html_outputer.HtmlOutputer() #爬虫调度程序 def craw(self, root_url): count = 1 #入口URL添加进URL管理器 self.urls.add_new_url(root_url) #启动循环,获取待扒取的URL,然后交给下载器下载页面,调用解析器解析页面 while self.urls.has_new_url(): try: new_url = self.urls.get_new_url() print 'craw',count, ':' ,new_url html_cont = self.downloader.download(new_url) #得到新的URL列表和内容 new_urls, new_data = self.parser.parse(new_url,html_cont) #新的URL存到URL管理器,同时进行数据的收集 self.urls.add_new_urls(new_urls) self.outputer.collect_data(new_data) if count == 10: break count = count +1 except: print 'craw dailed' #调用output_html展示爬取到的数据 self.outputer.output_html() if __name__ == "__main__": #入口URL root_url = "https://item.jd.com/4224129.html" obj_spider = SpiderMain() #启动爬虫 obj_spider.craw(root_url)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsyxg.html