python基础课程4(看代码看注释)--爬虫爬取网页信息

#主要用的python库:安装必要的库requests:用来获取页面信息; BeautifulSoup:用来获取页面结构的详细信息
#先获取链接,再到一个列表,进入标签,然后到class。。。。。就可以了(省略)
#安装
import requests
from bs4 import BeautifulSoup
url = "https://hz.lianjia.com/zufang/"
responce=requests.get(url)#获取到页面信息200,页面信息存储在text中
#查看页面信息存储位置,response.text
responce.text
soup = BeautifulSoup(responce.text,'lxml')#解析使用lxml格式的文本存储,使文本结构化了
links_div=('div',class_="pic-panel")##class加下划线是因为class是python里的关键字,此class非彼class
#从列表框里生成另一个列表推导式,利用列表生成式
links  =[div.a.get('herf') for div in links_div]
print(links,len(links))##30个链接,访问这些链接可以得到详细的租房信息
#links_div[1].a.get('herf')##仅仅提取了这个链接就够了
##上述代码封装成函数,名字为get_links,作用为获取下边所有租房页面的链接,返回一个链接列表

##封装:获取url页面下的内容,返回soup对象
def get_page(url):
    responce = request.get(url)
    soup = BeautifulSoup(responce.text, 'lxml')
    return soup

def get_links(link_url):
    #responce = requests.get(url)  # 获取到页面信息200,页面信息存储在text中。已封装成上述函数
    #soup = BeautifulSoup(responce.text, 'lxml')  # 解析使用lxml格式的文本存储,使文本结构化了。已封装成上述函数
    #调用上述替代上边注释掉的两行的函数
    soup=get_page(link_url)
    links_div = soup.find_all('div',class_='pic-panel')
    links=[links_div.a.get('herf') for div in links_div]
    return links
    links_url="https://hz.lianjia.com/zufang/"
    get_links(links_url)

def get_huose_info(huose_url)
    huose_url = "https://hz.lianjia.com/zufang/103102641328.html"
    #responce = request.get(hour_url)
    #soup = BeautifulSoup(responce.text,'lxml')
    #调用函数
    soup=get_page(huose_url)
    price=soup.find('span',class_="total").text##直接把价格4500获取出来
    unit=soup.find('span',class_="unit").text
    unit.str()#str函数字符转换工具
    house_info=soup.find_all('p')#('p',class='if')
    area=huose_info[0].text[3:]#切片工具切片掉标题:面积:
    layout=huose_info[1].text[5:]
    floor=huose_info[2].text[3:]
    direction = house_info[3].text[5:]
    ##地铁没有class,说明在获取huose_info时class时多余的
    train=huose[4].text[3:]
    #构建一个字典
    info={
        '面积':area,
        '价格':price
    }
封装数据库
DATABASE= {
    'host':127.0.0.1,
    'database':'Examination',
    'user':'root',
    'password':'yuping',
    'charset':utf8mb4

}
def get_db(setting):
    return MySQLdb.connect(**settings)
def insert(house_info):
    values = "'{}'"*11+"'{}'"
    sql_values = values.format(huose['价格'],huose['面积'],huose['价格'])
    sql = '''
        insert into 'huose'('price','unit','area')values({},)
    '''.format(sql_values)
    cursor = db.cursor()
    cursor.execute(sql)
    db.commit()
huose = get_huose_info('https://hz.lianjia.com/zufang/103102641328.html')
db = get_db(DATABASE)
insert(db,huose)
for link in links:
    time.sleep(2)##为了防止访问时间太长加上时间限制
    print("获取一个房子信息时间成功")
    huose = get_huose_info(link)
    insert(db,huose)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值