2020-12-21

前言

本文主要讲如何用python编写简单的爬虫从房天下网站爬取所有二手房的信息


一、爬虫?

我的理解:爬虫是人为了获取网上的大量数据(不易人工下载的),而编写的模拟人工的快速获取信息的小工程。即人可以见到,才可能用代码去模拟,如果没有权限是无法爬取到数据的。

二.注意事项

 1.正确的编写代码
 2.选取合适的爬取包(不同的包适合不同的环境)
 3.注意反爬取机制(一个程序员为难程序员的操作)
 4.数据的保存

三.使用的包

import requests  #用于模拟人的get(即在浏览器栏输入地址按回车的动作)请求
import csv #用于数据的保存,保存格式为csv文件
from lxml import etree #用于在得到的网页上生成查找树(如果学过html和数据结构就很好理解)
import time #我主要用来延时,爬取过快会被发现封掉ip

四.主要的模块

4.1 获取网页页面内容
#得到一个页面的tree(查找树)
#参数为url路由
def GetPageHtml(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64;x64) AppleWebKit/536.36 (KHTML, like Gecko) Chrome/58.0.3.29.110 Safari/536.36 Edge/16.16299'
    }

    page_html = requests.get(url=url, headers=headers).text
    tree = etree.HTML(page_html)
    return tree
4.2 在页面上查找数据
#得到页面中房屋的信息
def GetHouseInfo(page_tree,filename):
    list_house=page_tree.xpath('//div[@class="shop_list shop_list_4"]/dl//dd')
    #遍历所有的dd
    for list1 in list_house:
        list2 = []
        title=list1.xpath('./h4[@class="clearfix"]/a/span/text()')
        all_info = list1.xpath('./p[@class="tel_shop"]/text()')
        if len(title):
          list2.append(title[0].lstrip().rstrip())
        if len(all_info):
          for l in all_info:
              list2.append(l.lstrip().rstrip())
        SaveCsv(list2,filename=filename)
4.3 保存数据
def SaveCsv(list2,filename):  #list2中的数据保存到filename.csv中
   #用追加的形式打开文件 行与行之间不隔空行 
    with open(filename+'.csv','a',newline='',encoding='utf-8') as f: 
      filecsv=csv.writer(f)
      if len(list2):
        del list2[-1]  ##因为我拿下来的数据最后有个符号所以去掉list最后的元素
        filecsv.writerow(list2)  #在csv中写一行

五.过程分析

  1.下次继续写,先到这   我要期末考试  要全部代码可以找我要
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值