博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安居客爬虫(selenium实现)
阅读量:6535 次
发布时间:2019-06-24

本文共 2432 字,大约阅读时间需要 8 分钟。

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

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

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

#!/usr/bin/env python3# -*- coding: utf-8 -*-#导入模块from selenium import webdriverimport timeimport osimport randomimport 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).secondsprint('此次运行耗时%s秒。' % cha)print('...........end.............')  

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

你可能感兴趣的文章