前言
本文主要讲如何用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.下次继续写,先到这 我要期末考试 要全部代码可以找我要