目录
文章目录
前言
一、前置知识
二、实现步骤
1.分析网站
2.制定爬取方案
3.实现方案
4.基础代码展示
5.代码详解
6.代码封装
总结
前言
爬虫应严格遵守国家法律规定
时隔数月,进入暑假,回忆这数月的学习内容,不禁感慨计算机的世界是无比的广阔。
面对逐渐遗忘的爬虫知识,我必须重新拾起,保持自己的竞争力。
本篇文章简单通俗,是我入门爬虫的第一个项目。
一、前置知识
基础Python语法
简单利用xpath的解析方法,实现对链家网的二手房信息的获取。
二、实现步骤
1.分析网站
- 确定爬取的内容——二手房信息
- 分析网页源代码——请求方式,信息在哪里
2.制定爬取方案
3.实现方案
- 准备工作——url,headers,...
- 发起请求——requests
- 数据解析——xpath简单使用
- 数据保存——文件操作
4.基础代码展示
import requests
from lxml import etree
url = '...'
headers = {}
resp = requests.get(url, headers=headers)
# print(resp)
response = resp.text
# print(response)
html = etree.HTML(response)
data_list = html.xpath('//ul[@class="sellListContent"]//li')
# print(data_list)
idx=1
for li in data_list:
try:
name = li.xpath('./div[1]/div[1]/a/text()')[0]
address1 = li.xpath('./div[1]/div[2]/div/a[1]/text()')[0]
address2 = li.xpath('./div[1]/div[2]/div/a[2]/text()')[0]
size = li.xpath('./div[1]/div[3]/div/text()')[0]
total_money = li.xpath('./div[1]/div[6]/div[1]/span/text()')[0]
price = li.xpath('./div[1]/div[6]/div[2]/span/text()')[0]
info = "房名: " + name + "\n地址: " + address1 + "-" + address2 + "\n面积: " + size + "\n总价: " + total_money + "万" + "\n单价: " + price+"\n\n"
with open('...txt','a',encoding='utf-8') as file:
file.write(info)
print(f"{idx}保存成功")
idx+=1
# print(name,address1,address2,size)
except Exception as e:
pass
5.代码详解
- requests——发起请求
- etree——数据解析工具
- url——目标网址
- headers——爬虫伪装
- .text——获得网页代码
- HTML()——解析网页
- xpath()——路径取值
- try...except..——异常处理
- with .. open..——上下文管理器
6.代码封装
import requests
from lxml import etree
class LiJia(object):
def __init__(self):
self.url = '...'
self.headers = {}
self.idx = 1
def send_requests(self):
resp = requests.get(self.url, heapq=self.headers)
response = resp.text
self.parse_data(response)
def parse_data(self, response):
html = etree.HTML(response)
data_list = html.xpath('//ul[@class="sellListContent"]//li')
for li in data_list:
try:
name = li.xpath('./div[1]/div[1]/a/text()')[0]
address1 = li.xpath('./div[1]/div[2]/div/a[1]/text()')[0]
address2 = li.xpath('./div[1]/div[2]/div/a[2]/text()')[0]
size = li.xpath('./div[1]/div[3]/div/text()')[0]
total_money = li.xpath('./div[1]/div[6]/div[1]/span/text()')[0]
price = li.xpath('./div[1]/div[6]/div[2]/span/text()')[0]
info = "房名: " + name + "\n地址: " + address1 + "-" + address2 + "\n面积: " + size + "\n总价: " + total_money + "万" + "\n单价: " + price + "\n\n"
self.save_data(info)
except IndexError:
pass
def save_data(self, content):
with open('....', 'a', encoding='utf-8') as file:
file.write(content)
print(self.idx, "保存成功")
self.idx += 1
def run(self):
self.send_requests()
if __name__ == '__main__':
spider = LiJia()
spider.run()
总结
以上便是我走进爬虫的第一个案例
需要完成本案例我们要掌握Python基本语法和xpath的基本语法使用
感谢大家支持。