1. 程式人生 > >爬取網站小豬短租的少量資訊及詳細介紹--爬蟲案例篇

爬取網站小豬短租的少量資訊及詳細介紹--爬蟲案例篇

#!/usr/bin/env python
# -*- coding:utf-8 -*- 
# @Time    : 18-10-10 下午9:21
import requests #匯入requests包;發請求網頁
from bs4 import BeautifulSoup #匯入bs4包;解析網頁
import time #匯入time包 時間作用本文為:睡眠時間
headers ={
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
          }#加入請求頭
def sex_xiebie (class_name): #定義一個性別函式
    if class_name == ['member_ico1']: #通過發f12,性別為女的型別為:member_ico1
        return '女'
    else:
        return '男'     #通過if方法判斷性別為女還是男,因為男的也有一個型別,可以看看

def get_links(url):
    #定義一個網頁函式
    wb_data = requests.get(url,headers=headers)
    #獲取詳細頁面的連結
    soup = BeautifulSoup(wb_data.text,'lxml')
    #解析獲取網頁
    links = soup.select('#page_list > ul > li > a')
    #links為url列表

    for link in links:
        href = link.get("href")
        get_info(href)
    #迴圈url,挨個呼叫get_info()函式

def get_info(url):
#定義獲取詳細的網頁的
    wb_data =requests.get(url,'headers=headers')
    soup = BeautifulSoup(wb_data.text,'lxml')
    #解析網頁,獲取引數資訊
    tittles = soup.select('div.pho_info > h4')
    addresses = soup.select('span.pr5')
    prices = soup.select('#pricePart > div.day_l > span')
    imgs = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > a > img')
    names = soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > a')
    sexs = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > div')
    #通過selector方法尋找想找的資訊
    for tittle, address, price, img, name, sex in zip(tittles,addresses,prices,imgs,names,sexs):
        data = {
            '主題':tittle.get_text().strip(),
            '地址':address.get_text().strip(),
            '價格':price.get_text(),
            '圖片':img.get("src"),
            '名稱':name.get_text(),
            '性別':sex(sex.get("class"))
        }
        print(data)
        #解析了該網頁,並獲取該網頁的資訊,通過字典的資訊列印

if __name__ == '__main__':
#主程式的入口
    urls = ['http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(number)
    for number in range(1,16)]
    #小豬短租可以看到下面的網址有頁面頁面數,所以就可以構造url
    #構造多頁url,構造前15頁

for single_url in urls:
 get_links(single_url)
    #迴圈呼叫get_links()函式
time.sleep(3)
#每次迴圈一次,讓爬蟲暫停3秒,防止爬蟲失敗