需要爬取的資料
網址: http://bj.xiaozhu.com/
爬取資訊:
爬取網頁上300個房源資訊,包括標題,地址,日租金,第一張房源圖片連結,房東圖片連結,房東性別,房東名字
代碼
from bs4 import BeautifulSoupimport requests# 判斷性別def get_sex(sex_icon): if sex_icon == ['member_ico']: return "男" if sex_icon == ['member_ico1']: return "女" else: return "未標識"# 擷取每頁的url連結def get_page_url(url): web_url = requests.get(url) web_url_soup = BeautifulSoup(web_url.text,'lxml') page_urls = web_url_soup.select('#page_list > ul > li > a') for page_url in page_urls: each_url = page_url.get('href') get_detail_info(each_url)def get_detail_info(url): web_data = requests.get(url) soup = BeautifulSoup(web_data.text,'lxml') titles = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > h4 > em') addresses = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > p > span.pr5') prices = soup.select('#pricePart > div.day_l > span') pics1 = soup.select('#curBigImage') owner_pics = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > a > img') owner_names = soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > a') sexes = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > div') for title, address, price, pic1, owner_name, owner_pic, sex in zip(titles, addresses, prices, pics1, owner_names, owner_pics, sexes): data = { 'title': title.get_text(), 'address': address.get_text(), 'price': price.get_text(), 'pic': pic1.get('src'), 'owner_pic': owner_pic.get('src'), 'name': owner_name.get('title'), 'sex': get_sex(sex.get('class')) } print (data)urls = ["http://bj.xiaozhu.com/search-duanzufang-p{}-0/".format(number) for number in range(1, 10)]for url in urls: get_page_url(url)
成果
{'name': '想要', 'address': '北京市朝陽區望京利澤西園\n ', 'price': '395', 'owner_pic': 'http://image.xiaozhustatic1.com/21/5,0,44,1477,329,329,ea609ac8.jpg', 'title': '望京華彩十四號線精美豪華大一居', 'sex': '未標識', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/6,0,39,2965,1800,1200,f17d1a3e.jpg'}{'name': '暖陽洋Sunny', 'address': '北京市朝陽區彩虹路\n ', 'price': '798', 'owner_pic': 'http://image.xiaozhustatic1.com/21/2,0,86,206,375,375,d46c51ef.jpg', 'title': '緊鄰798、望京、酒仙橋,精品大三居。', 'sex': '未標識', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/3,0,34,2819,1800,1200,e051c333.jpg'}{'name': '小小西紅柿', 'address': '北京市丰台區六裡橋太平橋西裡40號\n ', 'price': '368', 'owner_pic': 'http://image.xiaozhustatic1.com/21/6,0,72,1777,260,260,887558a2.jpg', 'title': '臨近 北京西站 距電力醫院3分鐘 兩居', 'sex': '女', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/6,0,28,4451,1800,1200,e3bb1749.jpg'}{'name': '想要', 'address': '北京市朝陽區廣順北大街利澤西園\n ', 'price': '395', 'owner_pic': 'http://image.xiaozhustatic1.com/21/5,0,44,1477,329,329,ea609ac8.jpg', 'title': '望京商圈,毗鄰地鐵5分鐘,漫威主題大兩居', 'sex': '未標識', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/6,0,66,803,1800,1200,38a4c686.jpg'}{'name': '最美好的時光遇到你', 'address': '北京市朝陽區小關北裡\n ', 'price': '218', 'owner_pic': 'http://image.xiaozhustatic1.com/21/4,0,84,10730,260,260,6d756363.jpg', 'title': '惠新西街南口陽光大主臥', 'sex': '女', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/5,0,47,2122,1800,1200,8830e613.jpg'}{'name': '暖陽洋Sunny', 'address': '北京市朝陽區彩虹路\n ', 'price': '268', 'owner_pic': 'http://image.xiaozhustatic1.com/21/2,0,86,206,375,375,d46c51ef.jpg', 'title': '獨立衛浴鄰798、望京、酒仙橋更多優惠房源。', 'sex': '未標識', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/2,0,71,458,1800,1200,a9c5ea82.jpg'}{'name': '陽光豔豔', 'address': '北京市朝陽區蘋果社區北區\n ', 'price': '398', 'owner_pic': 'http://image.xiaozhustatic1.com/21/5,0,59,2841,363,363,8b6cf3d7.jpg', 'title': '國貿雙井10號線蘋果酒店式公寓', 'sex': '女', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/6,0,25,3184,1800,1200,4b993d38.jpg'}{'name': '蘭花姐', 'address': '北京市朝陽區十裡河左安東路弘善家園\n ', 'price': '279', 'owner_pic': 'http://image.xiaozhustatic1.com/21/4,0,2,9806,329,329,4656b7f6.jpg', 'title': '潘家園十裡河地鐵十號十四號臨近國貿', 'sex': '女', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/6,0,83,2043,1800,1200,cc659348.jpg'}{'name': 'Alicejy', 'address': '北京市朝陽區望京南湖中園\n ', 'price': '195', 'owner_pic': 'http://image.xiaozhustatic1.com/21/6,0,3,3065,160,160,ba886bf8.jpg', 'title': '望京親水微豪庭,獨享奢華對望東湖灣', 'sex': '女', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/6,0,62,3156,1800,1200,7d5aa8bc.jpg'}{'name': '小肖肖', 'address': '北京市東城區南鑼鼓巷\n ', 'price': '158', 'owner_pic': 'http://image.xiaozhustatic1.com/21/5,0,55,1517,260,260,ea96ce11.jpg', 'title': '南鑼鼓巷0距離,鼓樓、後海、故宮、簋街', 'sex': '女', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/1,0,53,2309,825,550,5a3a9a34.jpg'}{'name': '豹子楠', 'address': '北京市西城區高粱橋斜街長河灣\n ', 'price': '398', 'owner_pic': 'http://image.xiaozhustatic1.com/21/1,0,8,5386,333,333,764cfdb4.jpg', 'title': '西直門 長河灣 韓式田園溫馨2居', 'sex': '女', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/1,0,3,5482,825,550,f874984d.jpg'}{'name': '幸福姐姐', 'address': '北京市朝陽區紅軍營南路\n ', 'price': '128', 'owner_pic': 'http://image.xiaozhustatic1.com/21/1,0,93,4699,375,375,f8bc8f9b.jpg', 'title': '北五環5.13號地鐵高檔的溫馨公寓', 'sex': '女', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/1,0,42,4845,825,550,57c0343f.jpg'}{'name': 'Rolling_meng', 'address': '北京市朝陽區勁松華騰園\n ', 'price': '318', 'owner_pic': 'http://image.xiaozhustatic1.com/21/5,0,96,1555,375,375,ea000c2a.jpg', 'title': '10號線勁松/雙井/國貿CBD採光舒適大一居', 'sex': '男', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/6,0,40,333,1800,1200,c8e516a7.jpg'}{'name': '啵妞的家', 'address': '北京市朝陽區十裡堡潤楓嘉尚\n ', 'price': '338', 'owner_pic': 'http://image.xiaozhustatic1.com/21/1,0,33,4216,366,366,c589a192.jpg', 'title': '6號線地鐵公寓', 'sex': '女', 'pic': 'http://image.xiaozhustatic1.com/00,800,533/6,0,60,2088,1800,1200,3b057da1.jpg'}.....
總結 常用文法
列表 = [變數 for 變數 in range(開始數字,結束數字)]urls = ["http://bj.xiaozhu.com/search-duanzufang-p{}-0/".format(number) for number in range(1, 10)] 感覺重要的還是一個思路,函數與函數之間的聯絡。把關係屢清楚了,編程就簡單了 address這個變數其實最好還是能去除後面的\n,不過暫時沒想出來怎麼弄