美文网首页
爬取58同城单页商品数据

爬取58同城单页商品数据

作者: 冰雨情天 | 来源:发表于2016-05-07 21:05 被阅读0次

    小白一枚,学习python爬虫中······纯当学习笔记了,大神勿喷。

    今天,带来的是58同城单页商品数据爬取。

    要用到的:
      pycharm
      chrome浏览器
      python库:requests,Beautifulsoup4

    任务分析:
       1.解析当前页面
       2.获取当前页面里每个商品的链接
       3.剔除推广和转转商品
       4.解析商品的链接,获取商品标题,价格,发布时间,区域的信息

    一、解析当前页面
      导入所需要的库文件



    定义当前网址,提前创建一个空的列表用来放商品链接



    定义一个函数用来获取商品链接

    用requests的get方法发起网页请求

    解析网页



    右键检查商品列表


    确定定位位置

    用for循环和if条件判断结合剔除转转商品和推广商品,把剩余商品的链接(即获取的结果里的href里的内容)添加到列表real_url_list中

    二、获取商品信息
    定义获取商品信息的函数

    调用获取商品链接的函数



    用for循环遍历每一个商品链接,把商品信息装进data字典里并打印data

    三、调用函数获取结果

    完整代码如下:
    import requests
    from bs4 import BeautifulSoup
    
    url='http://bj.58.com/pbdn/0/'
    real_url_list=[]
    def get_link():
      wb_data=requests.get(url)
      soup=BeautifulSoup(wb_data.text,'lxml')
      real_url=soup.select('td.t a.t')
      for i in real_url:
        if str('jump')in str(i) or str('zhuanzhuan')in str(i):
          pass
        else:
          real_url_list.append(i.get('href'))
      return real_url_list
    
    def get_item_info():
      get_link()
      for i in real_url_list:
        wb_data=requests.get(i)
        soup=BeautifulSoup(wb_data.text,'lxml')
        data={
          'title':soup.title.text,
          'price':soup.select(' span.price')[0].text,
          'time':soup.select('li.time')[0].text if soup.find_all('li','time')else None,
          'area':list(soup.select( 'span.c_25d')[0].stripped_strings )if soup.find_all('span','c_25d')else None,
         }
        print(data)
    
    get_item_info()
    

    运行结果如下:


    注意:
      python对于缩进有着严格的要求,因为简书的markdown不太会用,所附代码的缩进并非是python默认的格式,但是对齐是正确的,若要复制代码运行参考对齐格式就好。

    下期预告:
       老司机带你飞,把煎蛋网的妹子图带回家


    相关文章

      网友评论

          本文标题:爬取58同城单页商品数据

          本文链接:https://www.haomeiwen.com/subject/pecsrttx.html