提示很清楚,不懂就用搜索引擎
# 导入所用到的包
from lxml import etree
import urllib.request, urllib.error
# import xlwt
# import sqlite3
# 主函数
def main():
# 网址
baseurl = "https://bj.fang.ke.com/loupan/ap6nha3l2l3pg"
# 网页
datalist = getData(baseurl)
print(datalist)
# # 保存数据
# savepath = "贝壳.xls"
# saveData(datalist, savepath)
# 爬取网页
def getData(baseurl):
datalist = []
for i in range(1, 6):
n = str(i) # 页数
url = baseurl + n # 每一页的网址
html = askURL(url) # 访问每一个网页的内容
tree = etree.HTML(html)
ul_list = tree.xpath("/html/body/div[6]/ul[2]/li")
# print(ul_list)
for li in ul_list:
data = [] # 保存个楼盘的全部信息
imgSrc = li.xpath("./a/img/@data-original")[0] # 获取图片链接
data.append(imgSrc)
title = li.xpath("./a/@title")[0] # 获取名称
data.append(title)
price = li.xpath("./div/div[4]/div[1]/span[1]/text()")[0] # 获取价格
data.append(price)
datalist.append(data)
return datalist
# 得到指定一个url的网页内容
def askURL(url):
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.178.400 QQBrowser/11.2.5170.400"}
request = urllib.request.Request(url, headers=head)
html = ""
try:
response = urllib.request.urlopen(request)
html = response.read().decode("utf-8")
except urllib.error.URLError as e:
if hasattr(e, "code"):
print(e.code)
if hasattr(e, "reason"):
print(e.reason)
return html
if __name__ == '__main__':
main()