w_data=data.groupby('update_time and 店名=="欧莱雅"')['totalPrice']
时间: 2024-02-01 20:02:02 浏览: 73
这是一个针对一个名为"data"的数据集进行的分组操作,按照"update_time"和"店名"两个列的值进行分组,并获取每个分组中"totalPrice"这一列的数据。具体来说,该代码使用了pandas库中的groupby函数,将数据集按照指定的列进行分组,并使用['totalPrice']选取了需要获取的数据列。
相关问题
import requests from bs4 import BeautifulSoup import openpyxl class LianJiaSpider(): def __init__(self): self.url = 'https://bj.lianjia.com/ershoufang/pg{0}/' self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.12022 SLBChan/109'} def send_request(self, url): resp = requests.get(url, headers=self.headers) if resp.status_code == 200: return resp def parse_html(self, resp): lst = [] html = resp.text bs = BeautifulSoup(html, 'lxml') ul = bs.find('ul', class_='sellListContent') li_list = ul.find_all('li') for item in li_list: title = item.find('div', class_='title').text positionInfo = item.find('div', class_='positionInfo').text address = item.find('div', class_='address').text followInfo = item.find('div', class_='followInfo').text tag = item.find('div', class_='tag').text totalPrice = item.find('div', class_='totalPrice totalPrice2').text unitPrice = item.find('div', class_='unitPrice').text # print(unitPrice) lst.append((title, positionInfo, address, followInfo, tag, totalPrice, unitPrice)) print(lst) self.save(lst) def save(self, lst): wb = openpyxl.Workbook() sheet = wb.active for row in lst: sheet.append(row) continue wb.save('D:/爬虫/链家.csv') def start(self): for i in range(1, 5): full_url = self.url.format(i) resp = self.send_request(full_url) #print(resp.text) self.parse_html(resp) if __name__ == '__main__': lianjia = LianJiaSpider() lianjia.start()使用以上代码爬取数据保存到文件中只显示最后一页30条数据,前面页码的数据都被覆盖了,如何更改
在 `save` 方法中,每次循环都重新创建了一个新的 `Workbook` 对象,因此在保存数据时会覆盖之前的数据。您可以将 `Workbook` 对象的创建放在 `__init__` 方法中,这样每次保存数据时都可以使用同一个 `Workbook` 对象。另外,您还可以将文件名中的页码部分替换为变量 `i`,这样每次保存的文件都会有不同的文件名,不会被覆盖。修改后的代码如下:
```python
import requests
from bs4 import BeautifulSoup
import openpyxl
class LianJiaSpider():
def __init__(self):
self.url = 'https://bj.lianjia.com/ershoufang/pg{0}/'
self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.12022 SLBChan/109'}
self.wb = openpyxl.Workbook()
self.sheet = self.wb.active
self.sheet.append(('标题', '位置', '地址', '关注信息', '标签', '总价', '单价'))
def send_request(self, url):
resp = requests.get(url, headers=self.headers)
if resp.status_code == 200:
return resp
def parse_html(self, resp):
html = resp.text
bs = BeautifulSoup(html, 'lxml')
ul = bs.find('ul', class_='sellListContent')
li_list = ul.find_all('li')
for item in li_list:
title = item.find('div', class_='title').text
positionInfo = item.find('div', class_='positionInfo').text
address = item.find('div', class_='address').text
followInfo = item.find('div', class_='followInfo').text
tag = item.find('div', class_='tag').text
totalPrice = item.find('div', class_='totalPrice totalPrice2').text
unitPrice = item.find('div', class_='unitPrice').text
self.sheet.append((title, positionInfo, address, followInfo, tag, totalPrice, unitPrice))
print('第{}页数据爬取完成'.format(i))
def save(self):
self.wb.save('D:/爬虫/链家_{}.csv'.format(i))
def start(self):
for i in range(1, 5):
full_url = self.url.format(i)
resp = self.send_request(full_url)
self.parse_html(resp)
self.save()
if __name__ == '__main__':
lianjia = LianJiaSpider()
lianjia.start()
```
在修改后的代码中,我将文件名改为了 `"D:/爬虫/链家_{}.csv".format(i)`,这样每次保存的文件名都会包含页码,不会被覆盖。同时,我将保存数据的操作从 `parse_html` 方法中分离出来,放在了单独的 `save` 方法中,并且在 `__init__` 方法中创建了 `Workbook` 对象和表头。这样就可以避免每次循环都重新创建一个新的 `Workbook` 对象,从而避免了数据被覆盖的问题。
class ShoppingCarView(View): def get(self, request): return render(request, "ShoppingApp/shopping_cart.html", {"code": 200}) def post(self,request): #购物车生成订单 data = request.POST items = data.get('items', "") items=items.split('|') #计算 costs= data.get('totalPrice',0) nums=data.get('totalNum',0) BillRecordMainrec=models.BillRecordMain.objects.create(costs=costs,nums=nums,creator=request.user) for item in items: if item!="": # 根据id查询购物车 id=int(item) dataitem = models.ShoppingCar.objects.get(id=id) models.BillRecordSub.objects.create(main_rec=BillRecordMainrec,goods=dataitem.goods,nums=dataitem.nums,costs=dataitem.nums*dataitem.goods.price) dataitem.delete() return successResponseCommon({"id":BillRecordMainrec.id}, "订单创建成功")
这是一个名为ShoppingCarView的类,继承自Django的View类。在类中定义了get和post方法,用于处理GET和POST请求。在get方法中,会渲染一个名为shopping_cart.html的模板,并返回code为200的响应。在post方法中,可以定义业务逻辑,但是由于示例代码中没有具体实现,所以不得而知。
阅读全文