今天跟着视频学习了一下爬取上海二手房(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里的英文逗号换成中文逗号。
(同样,因为是看视频学习的,所以文章类型定义为转载)