python3爬取上海二手房信息(学习、练手)

今天跟着视频学习了一下爬取上海二手房(2000-3000条数据),整体来说还是挺简单的。

主要学习到了用beautifulsoup来解析获取数据。

先上代码

代码:

import requests
from bs4 import BeautifulSoup
import re

page_number = 100#一共有100页,对每一页进行爬取
for page in range(page_number):
    url = "https://sh.lianjia.com/ershoufang/pg/" + str(page)
    html = requests.get(url).text
    # 创建beautifulsoup对象,
    soup = BeautifulSoup(html, 'html.parser')  # 一般都用内置的 然而lxml比内置的快   #作用是将源代码更好看了,一行一行的

    infos = soup.find('ul', {'class': 'sellListContent'}).find_all('li')

    with open(r'C:\Users\dell\Desktop\lianjia\lianjia.csv', 'a', encoding='utf-8') as f:
        num = 1
        for info in infos:
            if num < 256:
                name = info.find('div', {'class': "title"}).find('a').get_text()
                name1 = re.sub(r',', ',', name)  # 将name里英文逗号改为中文逗号 因为将这条数据插入到表里,直接将英文逗号后边的移到下边的表格里
                price = info.find('div', {'class': "priceInfo"}).find('div', {'class': "totalPrice"}).find(
                    'span').get_text()
                address = info.find('div', {'class': "address"}).find('a').get_text()
                address2 = info.find('div', {'class': "address"}).get_text()
                print(name1, price, address, address2)
                f.write("{},{},{},{}\n".format(name1, price, address, address2))
                num += 1

打开开发者选项,定位到二手房的名称 “ 地铁11号线……”

name是获取div里的类名为title里的a标签里的文本。(name、price、address、address数据的获取相同)

通过with as方式将获取的数据保存到本地

如果不使用name1的话,会发现表格中的价格这一栏会有一些不同,是因为name里有英文的逗号,保存到表格里,表格就会把逗号换成换格,解决方法是将name里的英文逗号换成中文逗号。

(同样,因为是看视频学习的,所以文章类型定义为转载)

猜你喜欢

转载自blog.csdn.net/easy_purple/article/details/82731124