Python爬虫入门——梦开始的地方

该文章是作者入门爬虫的首个项目,详细介绍了如何使用Python和XPath从链家网抓取二手房信息。文章涵盖前置知识如基础Python和XPath,以及实现步骤,包括分析网站、制定爬取方案、发起请求、数据解析、保存数据,并展示了基础代码和异常处理。最后,作者将代码进行封装,创建了一个简单的LiJia类来运行爬虫。
摘要由CSDN通过智能技术生成

目录

文章目录

前言

一、前置知识

二、实现步骤

1.分析网站

2.制定爬取方案

3.实现方案

4.基础代码展示

5.代码详解

6.代码封装

总结


前言

                                         爬虫应严格遵守国家法律规定

时隔数月,进入暑假,回忆这数月的学习内容,不禁感慨计算机的世界是无比的广阔。

面对逐渐遗忘的爬虫知识,我必须重新拾起,保持自己的竞争力。

本篇文章简单通俗,是我入门爬虫的第一个项目。


一、前置知识

基础Python语法

简单利用xpath的解析方法,实现对链家网的二手房信息的获取。

二、实现步骤

1.分析网站

  1. 确定爬取的内容——二手房信息
  2. 分析网页源代码——请求方式,信息在哪里

2.制定爬取方案

  • 本网站极其简单,信息直接呈现在网页源代码中

3.实现方案

  1. 准备工作——url,headers,...
  2. 发起请求——requests
  3. 数据解析——xpath简单使用
  4. 数据保存——文件操作

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的基本语法使用

感谢大家支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值