學(xué)習(xí)Python第二節(jié)課,爬取商品信息
1 目標(biāo)任務(wù)
1.1進(jìn)入小豬租(http://bj.xiaozhu.com/search-duanzufang-p1-0/
)谆甜,從列表頁面進(jìn)入第一個詳情頁盗胀,爬取“標(biāo)題”客燕、“地址”谁鳍、“日租金”鹰椒、“第一張房源圖片鏈接”沼死、‘“房東圖片鏈接”着逐、“房東性別”、“房東名字”意蛀。
1.2爬取10頁面房源信息
2 爬取結(jié)果
3 我的代碼
#! /usr/bin/env python
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests
def get_links(url):
# 向服務(wù)器請求獲取網(wǎng)頁內(nèi)容并賦值給wb_data
wb_data = requests.get(url)
# 解析網(wǎng)頁
soup = BeautifulSoup(wb_data.text, 'lxml')
# 獲取列表頁商品信息
links = soup.select('#page_list > ul > li > a ')
# 獲取10個列表頁商品的內(nèi)容
for link in links:
href = link.get('href')
get_detail_info(href)
# 判斷房東性別
def get_lorder_sex(class_name):
if class_name == ['member_ico']:
return '男'
else:
return '女'
def get_detail_info(url):
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text,'lxml')
# 獲取標(biāo)題
titles = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > h4 > em')
# 獲取地址
addresss = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > p > span')
# 獲取價格
prices = soup.select('#pricePart > div.day_l > span')
# 獲取圖片
images = soup.select('#curBigImage')
# 獲取房東頭像
avartars = 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.w_240 > h6 > span')
# 從標(biāo)簽中提取內(nèi)容
for title, address, price, image, avartar, name, sex in zip(titles, addresss, prices, images, avartars, names, sexs):
data = {
'title':title.get_text(),
'address':address.get_text(),
'price':price.get_text(),
'image':image.get('src'),
'avartar':avartar.get('src'),
'name':name.get_text(),
'sex':get_lorder_sex(sex.get('class'))
}
print(data)
# 批量獲取鏈接
urls = ['http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(number) for number in range(1,10)]
for single_url in urls:
get_links(single_url)
4 總結(jié)
4.1 使用request函數(shù)滨嘱,向服務(wù)器請求網(wǎng)頁內(nèi)容
4.2 使用format語句、for語句批量獲取網(wǎng)頁地址
4.3 在代碼執(zhí)行過程中浸间,語句逐條執(zhí)行,不可亂序吟榴,視乎不像C語言有函數(shù)的入口魁蒜。
若將批量獲取鏈接的代碼放到 def get_links(url)語句的前端會進(jìn)行報錯。