UltraDebug

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: A C D R G Y M Z X S P
公益项目,接受捐赠
查看: 3500|回复: 0
收起左侧

[Python] 把房产网页里面的二手房数据全部扒了下来!

[复制链接]
ultradebug

主题

0

回帖

UD

管理员

UID
1
积分
2533
注册时间
2021-12-20
最后登录
1970-1-1
2022-8-13 23:06:08 | 显示全部楼层 |阅读模式
学习Python还是挺有意思的,特别是对于网站爬取成功的时候,总有一种成就感!
特别是在解决网页分析问题的时候,需要有很大的耐心,每次分析都要打印一下,看看数据抓取的对不对。
今天,学习了网页数据的抓取,以及保存成CSV的练习,发现收获良多!
好了,还是放代码,主要交流学习用!(网址还是遮蔽了)
[Python] 纯文本查看 复制代码
import requestsimport parsel
import csv
import re
from threading import Thread


headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
}


def respon(first_url): # 请求函数
    resp = requests.get(url=first_url, headers=headers).text
    return resp


def get_url(first_url): # 获取二级链接
    resp = respon(first_url)
    select = parsel.Selector(resp)
    href = select.css('.house_item h1 a::attr(href)').getall()
    href_list = []
    for item in href:
        if 'broker' in item:
            pass
        elif 'community' in item:
            pass
        else:
            href_list.append(item)
    return href_list


def get_data(second_url): # 获取数据
    resp = respon(second_url)
    select = parsel.Selector(resp)
    title = select.css('.house_info h1::attr(title)').get()
    info = select.css('.other span::text').getall()
    price = select.css('.price_left::text').get()
    phone = select.css('.other1 div:nth-child(4) span::text').get()
    infor = [title, info[0], info[1], info[2], info[3], info[4], price, phone]
    return infor


def save(first_url): # 保存函数
    list_url = get_url(first_url)
    title = ['名称', '房型', '属性', '平方', '楼层', '装修', '价格', '电话']
    with open('二手房.csv', mode='a', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        writer.writerow(title)
        for link in list_url:
            list_data = get_data(link)
            writer.writerow(list_data)


def main(): # 主函数
    for i in range(1, 11):
        # print(i)
        url = f'http://www.*****.com/house/second/f_-page_{i}.html'
        save(url)


if __name__ == '__main__': # 调试函数
    t = Thread(target=main)
    t1 = Thread(target=main)
    t2 = Thread(target=main)
    t3 = Thread(target=main)
    t.start()
    t1.start()
    t2.start()
    t3.start()
    main()
SyntaxHighlighter Copyright 2004-2013 Alex Gorbatchev.
另外,请教大佬,这个多线程不知道对不对,感觉效果不是太大!
把房产网页里面的二手房数据全部扒了下来! - ultradebug_UltraDebug
UltraDebug免责声明
✅以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
✅The above content is forwarded or original by netizens. If there is infringement, please send the email to the destination 9003554@qq.com handle.

相关帖子

回复 打印

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|站点地图|UltraDebug ( 滇ICP备2022002049号-2 滇公网安备 53032102000034号)

GMT+8, 2026-1-24 04:08 , Processed in 0.039586 second(s), 12 queries , Redis On.

Powered by Discuz X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表