当前位置: 首页 > news >正文

安居客爬虫(selenium实现)

第一次写在博客上写爬虫“教程”,如果有不对的地方还望各位给予指正。

先讲一下思路吧,selenium有点击和输入模拟,所以打开链接后----->想网页输入想查询的城市------>到了相应的页面再点击相应的按钮------>获取页面中所有信息------>点击“下一页”------>循环获取网页内容。

1.写好注释,导入模块。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#导入模块
from selenium import webdriver
import time
import os
import random
import datetime

2.查询租房信息,该网站只提供50页的租房信息,所以爬取50页,由于第50页时,点击下一页无反应,会报错,所以添加一个异常处理。    PS:英语水平有限,只好拼音代替,还望各位不要嫌弃,目前正在努力学习英语中,以后会逐渐改成纯英文。#查询租房信息

#查询租房信息
def search_home(city):    
    url = 'https://www.anjuke.com/sy-city.html'
    browser = webdriver.Chrome()
    browser.get(url)
    #点击相应的按钮。。。。。。
    browser.find_element_by_link_text(city).click()
    browser.find_element_by_link_text('租 房').click()
    #创建列表,用来存储爬取到的信息。
   jia_ge = []
    title = []
    xin_xi = []
    di_zhi = []
    n = 1
#循环获得每一页的信息,只能爬取50页。
    while n < 51:
        title_l = browser.find_elements_by_xpath('//h3//a[@target="_blank"]')
        xin_xi_l = browser.find_elements_by_xpath('//p[@class="details-item tag"]')
        di_zhi_l = browser.find_elements_by_xpath('//address[@class="details-item"]')
        jia_ge_l = browser.find_elements_by_xpath('//div[@class="zu-side"]')
        for aa,bb,cc,dd in zip(title_l,xin_xi_l,di_zhi_l,jia_ge_l):
            title.append(aa.text)
            xin_xi.append(bb.text)
            di_zhi.append(cc.text)
            jia_ge.append(dd.text)
        n += 1
        try:
            browser.find_element_by_xpath('//a[@class="aNxt"]').click()
        except:
            pass
    time.sleep(random.randint(1,3))
    browser.quit()
    return title,xin_xi,di_zhi,jia_ge
  

 

3. 写入文本中。由于还未学习数据库,只能暂时写一个存储到文本文档中的函数了。。。。。。。

  由于作者用linux写的爬虫,所以文件路径与windows不一样。

os.mkdir()是创建一个空文件夹,之所以用了一个异常处理,是因为在写爬虫时需要调试一下,如果文件已存在会报错。

 

#写入文件中
def write_txt(tuples,city):
    file = '/home/123456/桌面/%s' % city
    try:
        os.mkdir(file)
    except:
        pass
    with open('%s/%s.txt' % (file,city),'w') as txt:
        for wa,wb,wc,wd in zip(tuples[0],tuples[1],tuples[2],tuples[3]):
            txt.write('标题:  %s,  信息:  %s,  地址:  %s,  价格:  %s\n\n\n' % (wa,wb,wc,wd))
    return txt.close()

  4.运行程序。                                                                                                                                         谢谢大家的阅读。

#运行程序。
print('...............start...............')
start_time = datetime.datetime.now()
city = input('请输入你想要查询的城市:')
city_dict = search_home(city=city)
write_txt(tuples=city_dict,city=city)
end_time = datetime.datetime.now()
cha = (end_time - start_time).seconds
print('此次运行耗时%s秒。' % cha)
print('...........end.............')  

转载于:https://www.cnblogs.com/sniper-huohuohuo/p/8597455.html

相关文章:

  • 有关python的一些小知识
  • python中 逗号的 用法
  • Redisson官方文档 - 10. 额外功能
  • Flask---日常笔记1
  • 服务发现的基本原理
  • Win7无法访问Win2003共享文件夹的解决办法
  • bash: php: command not found
  • 贪心算法《最短路径》
  • javascript 封装一个class选择器
  • ubuntu 环境下的QT程序打包
  • dom4j解析xml
  • sublime text less安装踩坑图文讲解(less无法生成css)
  • PHP中遍历关联数组的方法
  • opencv再学习之路(五)---灰度直方图显示
  • 在windows2003上部署MVC4.0需要具备的环境
  • [数据结构]链表的实现在PHP中
  • [译] React v16.8: 含有Hooks的版本
  • Android组件 - 收藏集 - 掘金
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • export和import的用法总结
  • flask接收请求并推入栈
  • JavaScript设计模式之工厂模式
  • JS实现简单的MVC模式开发小游戏
  • MaxCompute访问TableStore(OTS) 数据
  • PermissionScope Swift4 兼容问题
  • python学习笔记-类对象的信息
  • Python学习之路13-记分
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • windows-nginx-https-本地配置
  • 给Prometheus造假数据的方法
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 记一次和乔布斯合作最难忘的经历
  • 今年的LC3大会没了?
  • 算法之不定期更新(一)(2018-04-12)
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​力扣解法汇总946-验证栈序列
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #100天计划# 2013年9月29日
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #stm32驱动外设模块总结w5500模块
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (12)Linux 常见的三种进程状态
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (算法)Travel Information Center
  • (学习日记)2024.01.09
  • (一)基于IDEA的JAVA基础1
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转载)深入super,看Python如何解决钻石继承难题