爬取58同城单页商品数据

2016-05-07  本文已影响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默认的格式,但是对齐是正确的,若要复制代码运行参考对齐格式就好。

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


上一篇下一篇

猜你喜欢

热点阅读