#主要用的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)
python基础课程4(看代码看注释)--爬虫爬取网页信息
最新推荐文章于 2022-07-23 19:56:17 发布