链家二手房爬虫和获取经纬度

# -*- coding: utf-8 -*-
"""
Created on Mon Mar 25 10:10:22 2019

@author: 
"""
# -*- coding: utf-8 -*-
import bs4 
import requests
import time#引入time,计算下载时间
import socket
from urllib import error

def open_url(url):
    try:
        hd = {}
        hd['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'
        r = requests.get(url,headers=hd,timeout=10)
        s = requests.session()       
        s.keep_alive = False
        

    except error.URLError as e:
        if isinstance(e.reason,socket.timeout):
    # 下面这里写自己的业务逻辑
            print('超时,执行下一个请求')
    return r


host = 'https://wx.lianjia.com/ershoufang/binhu/pg'

whvj = []
ee = []
aa = []
bb = []
cc = []
dd = []
ff = []
count = 36

start = time.time()
size = 1
q = 101


while count < q:
    url = host + str(count)
    r = open_url(url)
    soup = bs4.BeautifulSoup(r.text,'html.parser')
    count = count + 1
    
    
    targets = soup.find_all('a',class_="img")
    
    for each in targets:
        whvj.append(each['href'])
    
    print('\r'+"已经下载:"+int(count/q*100)*"█"+"【"+str(round(float(count/q)*100,2))+"%"+"】",end="")
#    print(url)
#    print(whvj)

whvj = list(set(whvj))
count1 = 0 
response = requests.get(url,stream = True)#stream参数设置成True时,它不会立即开始下载,当你使用iter_content或iter_lines遍历内容或访问内容属性时才开始下载
chunk_size = 1024#每次块大小为1024
content_size = int(len(whvj))

for i in whvj:
    try:
        soup1 = bs4.BeautifulSoup(open_url(i).text,'html.parser')
        title = soup1.find_all('h1',class_='main')
        aa.append(title[0].text.split())
        xbxi = soup1.find_all("div",class_="content")
    
        bb.append(xbxi[2].text.split())
    #    cc.append(xbxi[3].text.split())
        dd.append(soup1.find_all("span",class_="info")[0].text.split())
        jxge = soup1.find_all('div',class_='price')
        for i in jxge:
            ee.append(i.text)
        xnqu = soup1.find_all('div',class_ = 'fl l-txt')
        gg = []
        for i in xnqu:
            gg.append(i.text.split())
        ff.append(gg[0][8])
        size = size +1 
        print('\r'+"已经下载:"+int(size/content_size*100)*"█"+" 【"+str(round(size/chunk_size/1024,2))+"MB】"+"【"+str(round(float(size/content_size)*100,2))+"%"+"】",end="")
    except OSError:
        pass
    continue
##
result = []
length =len(whvj)
for i in range(length):
    result.append(str(dd[i])+'^'  +str(aa[i])+'^'+str(whvj[i])
                + '^' + str(ee[i]) + '^' + str(ff[i])
                    + '^' + str(bb[i]) + '^' +  '\n')
    
end = time.time()
print("总耗时:"+str(end-start)+"秒")

#data_count = 0

with open('bbhu1.txt','w',encoding='utf-8') as f:
    for each in result:
        f.write(each)

获取经纬度

import json
from urllib.request import urlopen, quote
import pandas as pd
import csv
 
xlsx_1 = pd.ExcelFile('bbhu.xlsx')
data1 = xlsx_1.parse('Sheet2')

url = 'http://api.map.baidu.com/geocoder/v2/'
output = 'json'
ak = 'raSWR0VKik7******shHzFH'
s = data1['小区']
jkdu = []
wwdu = []

# 创建一个worksheet
for i in s:
    try:
        add = quote(i)
        uri = url + '?' + 'address=' + add  + '&output=' + output + '&ak=' + ak #百度地理编码API
        req = urlopen(uri)
        res = req.read().decode()
        temp = json.loads(res)
        jkdu.append(temp['result']['location']['lng'])
        wwdu.append(temp['result']['location']['lat'])#打印出经纬度
    except OSError:
        pass
    continue
             

result = []
length = len(jkdu)
for i in range(length):
    result.append(str(s[i])+' '+str(jkdu[i])+' '+str(wwdu[i]))


with open('xiaoqujkww.csv', 'a', newline='', encoding='utf-8')as f:
    write = csv.writer(f)
    for data in result:
        write.writerow([data])
    f.close()

在这里插入图片描述

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值