目标网址:
https://www.creprice.cn/rank/index.html
这一看就是个静态页面,没有用任何反爬措施所以很好爬。
直接发送请求解析数据就可以了。
完整代码
import requests
from lxml import etree
import openpyxl
#新建workbook对象
wb=openpyxl.Workbook()
#创建正在操作的表
sheet = wb.active
#设置sheet表格的表头
sheet.append(['序号','城市名称','平均单价','环比','同比'])
url="https://www.creprice.cn/rank/index.html"
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
html=requests.get(url=url,headers=headers).text
tree=etree.HTML(html)
number=tree.xpath("//tbody[@class='ranklist']/tr/th[1]/text()")[1::]
city_name=tree.xpath("//tbody[@class='ranklist']/tr/th[2]/a/text()")
price=tree.xpath("//tbody[@class='ranklist']/tr/th[3]/text()")[1::]
Hb=tree.xpath("//tbody[@class='ranklist']/tr/th[4]/text()")[1::]
Tb=tree.xpath("//tbody[@class='ranklist']/tr/th[5]/text()")[1::]
for i in range(0,len(city_name)):
data = []
data.append(number[i])
data.append(city_name[i])
data.append(price[i])
data.append(Hb[i])
data.append(Tb[i])
print(data)
sheet.append(data)
wb.save('房价排行.xlsx')
解析:
进入网站打开开发者工具后我们直接可以看到网页源代码,直接就能请求下来
这基本全是html代码
所以我们首选xpath来解析数据,用正则在这里反而有点麻烦