目录
【爬虫和数据挖掘】
【绕过代理】
【创建文件夹】
【request请求】
【response解析】
【记录文件】
【运行脚本】
#!/usr/bin/env/python3
# -*- coding:utf-8 -*-
'''
Author:leo
Date&Time:2021/04/01 18:10
Project:Python3 FileName:58_request.py
'''
# -*- coding: utf-8 -*-
import json, time, os
import requests
from lxml import etree
class Five_requests(object):
def __init__(self):
self.logTime = time.strftime('%Y%m%d_%H%M%S', time.localtime(time.time()))
self.curTime = time.strftime('%Y%m%d %H%M%S', time.localtime(time.time()))
self.nowdate_8, self.nowtime_6 = self.curTime.split(" ")[0], self.curTime.split(" ")[1]
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
"Content-Type": "text/html;charset=UTF-8"
}
self.proxies = { "http": None, "https": None}
def get_proxies(self):
# 绕过代理方法一
proxies = {"http": None, "https": None}
requests.get("http://ff2.pw", proxies=proxies)
response = requests.get("http://httpbin.org/ip", proxies=proxies)
print(response.text)
# 绕过代理方法二
session = requests.Session()
session.trust_env = False
response = session.get('http://ff2.pw')
print(response.text)
return proxies
def mkdir_file(self, path):
path = path.strip()
path = path.rstrip("\\")
isExists=os.path.exists(path)
if not isExists:
os.makedirs(path)
# print(path+' 创建成功')
return True
else:
# print(path+' 目录已存在')
return False
def get_pic(self, pic_name, pic_url):
try:
res_pic = requests.get(url=pic_url, headers=self.headers, timeout=10, proxies=self.proxies) #二进制数据
# print('【成功】正在下载第图片,图片地址:' + str(pic_url))
self.mkdir_file("D:\\Mytest\\Svnbucket\\Python3\\临时文件\\images")
pic_dir = 'images/' + pic_name.replace("/", "") + '_' + str(time.strftime('%Y%m%d_%H%M%S', time.localtime(time.time()))) + '.jpg' #给每张图片指定路径并命名
fp = open(pic_dir, 'wb+') #给每张图片指定路径并命名
fp.write(res_pic.content) #将图片二进制数据写成图片
fp.close()
except requests.exceptions.ConnectionError:
print('【失败】当前图片无法下载,图片地址:' + str(pic_url))
def get_info(self, html, mode, x_xpath):
try:
str_result = x_xpath
if mode == "string":
res_value = html.xpath(str_result)[0].xpath('string(.)')
elif mode == "url":
res_value = html.xpath(str_result)[0]
elif mode == "list":
res_value = html.xpath(str_result)
elif mode == 'picture':
res_value = html.xpath(str_result)[0]
if isinstance(res_value, str):
res_value = res_value.encode('gbk', 'ignore').decode('gbk').strip().replace(" ", '').replace("\n", '')
elif isinstance(res_value, list):
res_value = " | ".join([l for l in res_value if "\n" not in l])
except Exception as e:
res_value = str(str_result) + "\t错误码:" + str(e)
return res_value
def get_html(self, url, log=False):
response = requests.get(url, headers=self.headers, proxies=self.proxies)
res_text = response.text.encode('gbk', 'ignore').decode('gbk')
html = etree.HTML(res_text, etree.HTMLParser())
if log == True:
print("Start crawling:" + url)
return html
# 获取信息
def get_catalog(self, html):
html_list = html.xpath('//*[@id="house-list-wrap"]/li')
print("Statistic data:" + str(len(html_list)) + "条数据\n")
# 遍历列表
for i in range(1, len(html_list)):
# for i in range(1, 5+1):
res_url = self.get_info(html=html, mode="url", x_xpath=f'//*[@id="house-list-wrap"]/li[{i}]/a/@href')
res_pic_address = self.get_info(html=html, mode="picture", x_xpath=f'//*[@id="house-list-wrap"]/li[{i}]/a/div[@class="pic"]/img/@data-src')
res_info_title = self.get_info(html=html, mode="string", x_xpath=f'//*[@id="house-list-wrap"]/li[{i}]/a/div[contains(concat(" ", @class, " "), "list-info ")]/h2/span[@class="title_des"]')
res_info_industry = self.get_info(html=html, mode="list", x_xpath=f'//*[@id="house-list-wrap"]/li[{i}]/a/div[contains(@class, "list-info ")]/p[1]//text()')
res_info_price = self.get_info(html=html, mode="list", x_xpath=f'//*[@id="house-list-wrap"]/li[{i}]/a/div[contains(@class, "price ")]//text()')
res_info_area = self.get_info(html=html, mode="list", x_xpath=f'//*[@id="house-list-wrap"]/li[{i}]/a/div[contains(@class, "area")]//text()')
res_info_position = self.get_info(html=html, mode="string", x_xpath=f'//*[@id="house-list-wrap"]/li[{i}]/a/div[contains(@class, "list-info ")]/p[2]')
self.get_pic(pic_name=str(i) + "_" + res_info_title, pic_url=res_pic_address)
print('标题:' + res_info_title, end='\n------------列表信息------------\n')
print('区域:' + res_info_industry, end='\n')
print('楼层:' + res_info_position, end='\n')
print('价格:' + res_info_price, end='\n')
print('面积:' + res_info_area, end='\n')
print('详情:' + res_url, end='\n')
print('图片:' + res_pic_address, end='\n')
# 详情信息
details_html = self.get_html(url=res_url)
res_d_tiltle = self.get_info(html=details_html, mode="list", x_xpath='//*[@class="main-wrap"]/div[@class="house-title"]//text()')
res_d_outline = self.get_info(html=details_html, mode="list", x_xpath='//*[@class="main-wrap"]/div[@class="house-basic-info clearfix"]//text()')
res_d_survey = self.get_info(html=details_html, mode="list", x_xpath='//div[@class="general-item general-intro"]/ul//text()')
res_d_describe = self.get_info(html=details_html, mode="list", x_xpath='//div[@class="des-item"]//text()')
print(end='------------详情信息------------')
print('标题:' + res_d_tiltle.encode('gbk', 'ignore').decode('gbk'), end="\n")
print('概要:' + res_d_outline.encode('gbk', 'ignore').decode('gbk'), end='\n')
print('概况:' + res_d_survey.encode('gbk', 'ignore').decode('gbk'), end='\n')
print('描述:' + res_d_describe.encode('gbk', 'ignore').decode('gbk'), end='\n')
print('Url:' + res_url.encode('gbk', 'ignore').decode('gbk'), end='\n')
print(end="\n")
def write_info(self, res_text):
with open('response_2021.txt', 'a+', encoding='utf-8') as write:
write.write(json.dumps(res_text, ensure_ascii=False) + '\n')
write.write('\n')
def run(self):
test = Five_requests()
html = test.get_html(url='https://xn.58.com/shangpucz/', log=True)
test.get_catalog(html=html)
if __name__ == "__main__":
Five_requests().run()
Start crawling:https://xn.58.com/shangpucz/
Statistic data:69条数据
标题:BP个人城北区小桥医院旁火锅店转让
------------列表信息------------
区域:城北-小桥大街 | 雨亭黑鱼火锅 | 经营中
楼层:临街门面1层
价格:1.5 | 万/月 | 日租金 4.63元/㎡/天
面积:108 | ㎡ | 建筑面积
详情:https://xn.58.com/shangpu/44797981702299x.shtml
图片:https://pic7.58cdn.com.cn/anjuke_58/007bd14f8d77e8a92ce172384e84b023?w=240&h=180&crop=1&srotate=1
------------详情信息------------标题:(转让)BP 个人 城北区小桥医院旁火锅店转让 | 餐饮美食 | 临街门面 | 临街 | 可餐饮 | 可明火 | 上水 | 下水 | 380V | 外摆区 | 更新于2021-02-23 | 11人已浏览 | 收藏 | 0 | 举报 | 电话被冒用 | 信息虚假 | 我要报案
概要:1.5 | 万/月 | 转让费:25.5万元 | 询问具体转让内容? | 快速贷款 > | 108m | 临街门面 | 建筑面积 | 物业类型 | 楼盘: | 地址: | 地图 | 李召生 | 青海爆铺广告有限公司 | | 微信扫码咨询 | 15597050133 | 电话联系TA | 扫一扫,进详情
概况:月租 | 1.5万/月 | 转让费 | 询问具体转让内容? | 押付 | 押3付12 | 剩余租期 | 3个月 | 建筑面积 | 108m | 商铺性质 | 二手房 | 商铺类型 | 临街门面-临街 | 经营状态 | 经营中 | 经营类型 | 餐饮美食-餐馆 | 楼层 | 1层/共1层 | 规格 | 面宽8m、层高3.3m、进深13.5m | 客流人群 | 办公、学生、居民 | 相关费用 | 暂无数据
描述:房源亮点 | 商户名称:雨亭黑鱼火锅 | 地理位置:城北区小桥医院旁金色家园南门 | 详情:地理位置优越,人流量大,格局通畅,中等装修,环境优雅,经营模式成熟,同行接手无需二次投入,接手即可营业,周边小区众多,交通方便,有学校,医院,生活住宅区,人流量大,发展前景乐观,共计总面积为108平方米。户型方正,适合各种行业等! 空间大,无行业限制,接手无后顾之忧,具体情况欢迎来电话详谈 | 所属商圈:小桥大街 | 店铺位于:西宁市城北区小桥医院旁金色家园南门 | 店名: 雨亭黑鱼火锅 | 楼层:共1层 | 面积:108㎡。 | 装修情况:中等装修 | 设备:................................. | 原业态情况:空铺 | 不可做行业:无 | 基础设施:通风 排烟 消防 380V | 房租:15000元/月 年交,押金5万
Url:https://xn.58.com/shangpu/44797981702299x.shtml
标题:BP个人城北国际村旺赢川菜馆转让(低价转让)
------------列表信息------------
区域:城北-宁张路 | 湘野小厨 | 经营中
楼层:临街门面1层
价格:1.57 | 万/月 | 日租金 2.33元/㎡/天
面积:224 | ㎡ | 建筑面积
详情:https://xn.58.com/shangpu/42623028797061x.shtml
------------详情信息------------标题:(转让)BP 个人 城北国际村旺赢川菜馆转让(低价转让) | 餐饮美食 | 临街门面 | 价格可面议 | 转让费可面议 | 随时入驻 | 随时可看 | 临街 | 可餐饮 | 可明火 | 上水 | 更新于2021-02-24 | 419人已浏览 | 收藏 | 0 | 举报 | 电话被冒用 | 信息虚假 | 我要报案
概要:1.57 | 万/月 | 转让费:面议(费用可面议) | 询问卖方心理预期? | 快速贷款 > | 224m | 临街门面 | 建筑面积 | 物业类型 | 楼盘: | 地址: | 地图 | 谢生莲 | 青海爆铺广告有限公司 | | 微信扫码咨询 | 13099782776 | 电话联系TA | 扫一扫,进详情
概况:月租 | 1.57万/月 | 转让费 | 询问卖方心理预期? | 押付 | 押1付12 | 剩余租期 | 4个月 | 建筑面积 | 224m | 商铺性质 | 二手房 | 商铺类型 | 临街门面-临街 | 经营状态 | 经营中 | 经营类型 | 餐饮美食-餐馆 | 楼层 | 1层/共2层 | 规格 | 面宽9.5m、层高6m、进深19m | 客流人群 | 办公、学生、居民 | 相关费用 | 暂无数据
| 房租:15680元/月
Url:https://xn.58.com/shangpu/42623028797061x.shtml
标题:城中区饮马街37号莫家街对面适合教育培训大型超市健身房KTV
------------列表信息------------
区域:城中-饮马街 | 天桥购物广场 | 空置中
楼层:购物百货中心1层
价格:39.26 | 万/月 | 日租金 1.5元/㎡/天
面积:8724 | ㎡ | 建筑面积
详情:https://xn.58.com/shangpu/44204378337417x.shtml
图片:https://pic4.58cdn.com.cn/anjuke_58/8ecee741f024f12392ff3cfd9c8670b7?w=240&h=180&crop=1&srotate=1
------------详情信息------------标题:(出租)城中区饮马街37号莫家街对面适合教育培训大型超市健身房KTV | 购物百货中心 | 价格可面议 | 随时入驻 | 随时可看 | 临街 | 上水 | 下水 | 更新于2021-02-24 | 67人已浏览 | 收藏 | 0 | 举报 | 电话被冒用 | 信息虚假 | 我要报案
概要: | 39.26 | 万/月 | 1.5元/m/天(价格可面议) | 8724m | 购物百货中心 | 建筑面积 | 物业类型 | 楼盘: | 地址: | 地图 | 角巴吉 | 青海贤居房地产营销策划有限公司 | | 微信扫码咨询 | 13519785382 | 电话联系TA | 扫一扫,进详情
概况:月租 | 39.26万/月 | 押付 | 押1付12 | 剩余租期 | 暂无数据 | 建筑面积 | 8724m | 商铺性质 | 二手房 | 商铺类型 | 购物百货中心-临街 | 经营状态 | 空置中 | 经营类型 | 百货超市-超市 | 楼层 | 1层/共4层 | 规格 | 面宽99m、层高4.8m、进深90m | 客流人群 | 办公、居民 | 相关费用 | 暂无数据
描述:房源亮点 | 房源概括:城中区饮马街莫家街对面 负一楼3302平 二楼2301平 四楼 3121平 | 周边配套:学校 医院 银行 汽车站 公园 广场 大型商场和超市 | 交通路线: 25路 9路 35路 141路 9001路 16路 | 本人郑重 | 本人发布的房源价格均为房东实际报价绝无恶意提高价格 | 本人所发的室内照片均为本房源的实景照片绝无任何虚假信息本人保证透明交易坚决不赚差价以专业的精神为您你服务! | 希望我的房源描述能为您找房带来帮助节省您宝贵的时间。 | 周边客流 | 周边配套:学校 医院 银行 汽车站 公园 广场 大型商场和超市 | 适合行业 | 适合做教育培训 大型超市 健身房、宾馆、酒店、电竞宾馆、影院 足浴 洗浴 KTV等。 | 服务介绍 | 本人郑重 | 本人发布的房源价格均为房东实际报价绝无恶意提高价格 本人所发的室内照片均为本房源的实景照片绝无任何虚假信息本人保证透明交易坚决不赚差价以专业的精神为您服务!,匹配房源上我们会按照客户需求进行匹配,房源价格问题上我们会商务谈判,合同方面我们非常严谨,每一个房源匹配,带客户看房,细节商谈,物业交接每一项环节我们会细心认真的去完成。 希望我的房源描述能为您找房带来帮助节省您宝贵的时间。
Url:https://xn.58.com/shangpu/44204378337417x.shtml
标题:城东区经济开发区创业园铺面适合大型餐饮领包营业
------------列表信息------------
区域:城东-民和路 | 经济开发区创业园 | 空置中
楼层:其他
价格:9.99 | 万/月 | 日租金 1.11元/㎡/天
面积:3000 | ㎡ | 建筑面积
详情:https://xn.58.com/shangpu/44134712502283x.shtml
------------详情信息------------标题:(出租)城东区经济开发区创业园铺面适合大型餐饮领包营业 | 其他 | 临街 | 可餐饮 | 上水 | 下水 | 更新于2021-02-24 | 47人已浏览 | 收藏 | 0 | 举报 | 电话被冒用 | 信息虚假 | 我要报案
概要: | 9.99 | 万/月 | 1.11元/m/天 | 3000m | 其他 | 建筑面积 | 物业类型 | 楼盘: | 地址: | 地图 | 角巴吉 | 青海贤居房地产营销策划有限公司 | | 微信扫码咨询 | 13519785382 | 电话联系TA | 扫一扫,进详情
概况:月租 | 9.99万/月 | 押付 | 押1付12 | 剩余租期 | 暂无数据 | 建筑面积 | 3000m | 商铺性质 | 二手房 | 商铺类型 | 其他-临街 | 经营状态 | 空置中 | 经营类型 | 餐饮美食-餐馆 | 楼层 | 独栋/共2层 | 规格 | 面宽50m、层高30m、进深4.5m | 客流人群 | 暂无数据 | 相关费用 | 暂无数据
描述:房源亮点 | 房源概括:城东区经济开发区创业园3000平铺面 豪华装修 设施设备俱全 | 周边配套:学校 医院 银行 汽车站 公园 广场 大型商场和超市 | 交通路线: 25路 9路 35路 141路 9001路 16路 | 本人郑重 | 本人发布的房源价格均为房东实际报价绝无恶意提高价格 | 本人所发的室内照片均为本房源的实景照片绝无任何虚假信息本人保证透明交易坚决不赚差价以专业的精神为您你服务! | 希望我的房源描述能为您找房带来帮助节省您宝贵的时间。 | 周边客流 | 周边配套:学校 医院 银行 汽车站 公园 广场 大型商场和超市 | 适合行业 | 内部餐饮设施俱全,可做餐饮、健身房、宾馆、酒店、电竞宾馆、影院等。 | 服务介绍 | 本人郑重 | 本人发布的房源价格均为房东实际报价绝无恶意提高价格 本人所发的室内照片均为本房源的实景照片绝无任何虚假信息本人保证透明交易坚决不赚差价以专业的精神为您服务! 希望我的房源描述能为您找房带来帮助节省您宝贵的时间。
Url:https://xn.58.com/shangpu/44134712502283x.shtml
标题:城中区南关街1100临街铺面已装修适合餐饮领包营业
------------列表信息------------
区域:城中-人民街 | 南关街 | 空置中
楼层:社区底商2层
价格:6.05 | 万/月 | 日租金 1.83元/㎡/天
面积:1100 | ㎡ | 建筑面积
详情:https://xn.58.com/shangpu/44135174558236x.shtml
------------详情信息------------标题:(出租)城中区南关街1100临街铺面已装修适合餐饮领包营业 | 社区底商 | 随时入驻 | 随时可看 | 临街 | 可餐饮 | 上水 | 下水 | 更新于2021-02-24 | 105人已浏览 | 收藏 | 0 | 举报 | 电话被冒用 | 信息虚假 | 我要报案
概要: | 6.05 | 万/月 | 1.83元/m/天 | 1100m | 社区底商 | 建筑面积 | 物业类型 | 楼盘: | 地址: | 地图 | 角巴吉 | 青海贤居房地产营销策划有限公司 | | 微信扫码咨询 | 13519785382 | 电话联系TA | 扫一扫,进详情
概况:月租 | 6.05万/月 | 押付 | 押1付12 | 剩余租期 | 暂无数据 | 建筑面积 | 1100m | 商铺性质 | 二手房 | 商铺类型 | 社区底商-临街 | 经营状态 | 空置中 | 经营类型 | 餐饮美食-餐馆 | 楼层 | 2层/共7层 | 规格 | 面宽50m、层高4.5m、进深21m | 客流人群 | 暂无数据 | 相关费用 | 暂无数据
描述:房源亮点 | 房源概括:城中区南关街1100平铺面 原火锅店 豪华装修 设施设备俱全 | 周边配套:学校 医院 银行 汽车站 公园 广场 大型商场和超市 | 交通路线: 29路 18路 35路 47路 59路 3路 | 本人郑重 | 本人发布的房源价格均为房东实际报价绝无恶意提高价格 | 本人所发的室内照片均为本房源的实景照片绝无任何虚假信息本人保证透明交易坚决不赚差价以专业的精神为您你服务! | 希望我的房源描述能为您找房带来帮助节省您宝贵的时间。 | 周边客流 | 周边配套:学校 医院 银行 汽车站 公园 广场 大型商场和超市 | 适合行业 | 内部餐饮设施俱全,可做餐饮、健身房、宾馆、酒店、电竞宾馆、影院教育培训等。 | 服务介绍 | 本人郑重 | 本人发布的房源价格均为房东实际报价绝无恶意提高价格 本人所发的室内照片均为本房源的实景照片绝无任何虚假信息本人保证透明交易坚决不赚差价以专业的精神为您服务,匹配房源上我们会按照客户需求进行匹配,房源价格问题上我们会商务谈判,合同方面我们非常严谨,每一个房源匹配,带客户看房,细节商谈,物业交接每一项环节我们会细心认真的去完成。 希望我的房源描述能为您找房带来帮助节省您宝贵的时间!
Url:https://xn.58.com/shangpu/44135174558236x.shtml