Python实战_2_第一周_第三节课程:真实世界中的网页解析

定位一个元素,要找它唯一性的特征。
有反爬虫机制的网站可以考虑移动版本。

以下是小猪短租的作业

# coding:utf-8


from bs4 import BeautifulSoup
import requests
import pandas as pd
import time


# 创建几个容器
subpage_list = []
all_data = pd.DataFrame(columns = ['标题', '地址', '租金', '房屋照片', '房东照片', '房东性别', '房东名字'])
n = 0


# 这个循环获取30个网页中的子页面地址
for i in range(1,14):
    print("正在爬取第{}个主页".format(str(i)))
    #time.sleep(0.5)
    url = 'http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(str(i))
    html = requests.get(url).text
    soup = BeautifulSoup(html,'lxml')
    subpage = soup.select('#page_list > ul > li > a')
    for i in subpage:
        subpage_list.append(i.get('href'))


for url in subpage_list:
    # 子页面爬虫部分
    #time.sleep(0.5)
    data =[]
    print("正在爬取第{}个信息".format(n))
    html = requests.get(url).text
    soup = BeautifulSoup(html, 'lxml')

    title = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > h4 > em')
    address = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > p > span.pr5')
    rent = soup.select('#pricePart > div.day_l > span')
    img = soup.select('#curBigImage')
    landlord_img = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > a > img')
    landlord_sex = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > div')
    landlord_name = soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > a')


    # 把爬取到的信息放到列表中
    data.append(title[0].get_text())
    data.append(address[0].get_text()[:-35]) #这个切片用来去掉换行符,如果报错去掉字符串切片。
    data.append(rent[0].get_text())
    data.append(img[0].get('src'))
    data.append(landlord_img[0].get('src'))
    if landlord_sex[0].get('class')[0] == 'member_ico1':
        data.append('女')
    elif landlord_sex[0].get('class')[0] == 'member_ico':
        data.append('男')
    else:
        data.append('不明')
    data.append(landlord_name[0].get_text())
    all_data.loc[n] = data
    n += 1


# 把DataFrame中的数据导出到本地

all_data.to_csv('F:\\data.csv')
print('文件已成功保存')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值