找回密码
  注册[Register]
查看: 532|回复: 15

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

[复制链接]
发表于 2022-8-14 08:28 来自手机 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

本帖最后由 jxhdda 于 2022-8-14 08:29 编辑

学习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()


162804do6tab6mzbquzob6.png
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2022-8-14 08:28 | 显示全部楼层

支持楼主,谢谢分享。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-14 08:29 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-14 08:36 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-14 08:49 | 显示全部楼层
谢谢@Thanks!
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-14 08:51 | 显示全部楼层
6666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-14 08:59 | 显示全部楼层
这个有什么用
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-14 09:25 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-14 09:26 | 显示全部楼层
感谢楼主分享!大牛有你更精彩!
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-8-14 09:35 | 显示全部楼层
谢谢大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|大牛论坛 |我的广告

GMT+8, 2024-5-8 18:24 , Processed in 0.041807 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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