爬取58同城單頁商品數據

小白一枚,學習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默認的格式,但是對齊是正確的,若要復制代碼運行參考對齊格式就好。

下期預告:
   老司機帶你飛,把煎蛋網的妹子圖帶回家


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容