栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

小爬虫1.0

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

小爬虫1.0

文章目录
  • 前言
  • 一、来吧展示
  • 二、如何实现爬取
    • 1.首先观察受害者
    • 2.进行爬取
  • 总结


前言

摸个鱼现在没什么事干,浅浅的来个python的爬虫项目之一的介绍,可视化爬虫一直是我们追求的目标,但是内卷严重的现在如何进行可视化爬虫是我们面临的一大难题,在此之下这款内卷神器就诞生了。受害者网站是链家,因为确实链家的网站反爬措施比较人性化,而且数据都是有较高的规律,我们能高效地爬取数据。废话不多说,下面进行展示,如果符合您的眼缘记得打赏一个赞。

一、来吧展示


今天来介绍下初级版本:

自己做的tk界面找不到了,但是qt界面并不影响,主要是看代码,有兴趣可以接着往下面看。

二、如何实现爬取 1.首先观察受害者


可以发现无论在链家怎么点击变换,很显而易见的是变化的只有前面城市的缩写以及后面页码的变换,也就是图例中cq(重庆)以及后面pg1(页码)
所以这是我们注意的点,我们可以利用这点进行下手写出
url=‘https://’+city+‘.lianjia.com/ershoufang/pg{}/’.format(page)来便于操作

2.进行爬取

有了1步骤的帮助,接下来,我们对网站进行爬取
代码如下(示例):

city = input("请输入城市首字母:")
start_page = input("请输入爬取起始页:")
end_page = input("请输入爬取结束页:")
for page in range(int(start_page), int(end_page)+1):
    print('===========================正在下载第{}页数据================================'.format(page))
    time.sleep(1)
    #获取爬取的页面
    url = 'https://'+city+'.lianjia.com/ershoufang/pg{}/'.format(page)
    #伪装浏览器,导入的UserAgent库中有许多User-Agent,每次随机生成一个,预防被反爬虫
    headers = {
        'User-Agent': str(UserAgent().random)
    }
    response = requests.get(url=url, headers=headers)

要注意,受害者反爬不是没有,你可以在底下加上

print(response.text)
//来观察到底有没有爬取成功如果有接着下面步骤

可以发现房子名价格等都在li节点中,现在我们要想方设法从li节点对数据进行爬取清洗筛选,现在动手

 #解析文本文件,选择出来每一个li节点,每个节点中含有一条信息的全部内容
    lis = selector.css('.sellListContent li')
    dit = {}
    for li in lis:#向字典中存储信息
        #获取其中的文字内容的title,以下类似
        title = li.css('.title a::text').get()
        dit['标题'] = title
        positionInfo = li.css('.positionInfo a::text').getall()
        info = '-'.join(positionInfo)
        dit['开发商'] = info
        houseInfo = li.css('.houseInfo::text').get()
        dit['房子信息'] = houseInfo
        followInfo = li.css('.followInfo::text').get()
        dit['发布周期'] = followInfo
        Price = li.css('.totalPrice span::text').get()
        dit['售价/万'] = Price
        unitPrice = li.css('.unitPrice span::text').get()
        dit['单价'] = unitPrice
        csv_writer.writerow(dit)
        cities_price.append(float(dit['售价/万']))
        print(dit)



如图这是效果,当然爬取的数据是需要保存的,我们先可以保存在csv数据库中方便覆盖和重写

 f = open('二手房信息.csv', mode='a', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['标题', '开发商', '房子信息', '发布周期', '售价/万', '单价'])
csv_writer.writeheader()
总结

整体代码如下:


cities_price = []
#写csv表头
f = open('二手房信息.csv', mode='a', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['标题', '开发商', '房子信息', '发布周期', '售价/万', '单价'])
csv_writer.writeheader()

#目前这些城市有链家:北京、天津、大连、河北、青岛、济南、烟台、沈阳、上海、南京、杭州、苏州、厦门、广州、深圳、中山、佛山、惠州、东莞、珠海、成都、重庆、武汉、长沙
city = input("请输入城市首字母:")
start_page = input("请输入爬取起始页:")
end_page = input("请输入爬取结束页:")
for page in range(int(start_page), int(end_page)+1):
    print('===========================正在下载第{}页数据================================'.format(page))
    time.sleep(1)
    #获取爬取的页面
    url = 'https://'+city+'.lianjia.com/ershoufang/pg{}/'.format(page)
    #伪装浏览器,导入的UserAgent库中有许多User-Agent,每次随机生成一个,预防被反爬虫
    headers = {
        'User-Agent': str(UserAgent().random)
    }

    #获取网页的get响应
    response = requests.get(url=url, headers=headers)
    #用css选择器先将,获取到的html放到选择器中
    selector = parsel.Selector(response.text)
    #解析文本文件,选择出来每一个li节点,每个节点中含有一条信息的全部内容
    lis = selector.css('.sellListContent li')
    dit = {}
    for li in lis:#向字典中存储信息
        #获取其中的文字内容的title,以下类似
        title = li.css('.title a::text').get()
        dit['标题'] = title
        positionInfo = li.css('.positionInfo a::text').getall()
        info = '-'.join(positionInfo)
        dit['开发商'] = info
        houseInfo = li.css('.houseInfo::text').get()
        dit['房子信息'] = houseInfo
        followInfo = li.css('.followInfo::text').get()
        dit['发布周期'] = followInfo
        Price = li.css('.totalPrice span::text').get()
        dit['售价/万'] = Price
        unitPrice = li.css('.unitPrice span::text').get()
        dit['单价'] = unitPrice
        csv_writer.writerow(dit)
        cities_price.append(float(dit['售价/万']))
        print(dit)

下一次将介绍分析的功能实现以及进一步完善,可以点一个关注哦

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977032.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号