用python爬取网站https://www.damai.cn/的用户ID、性别、年龄、地域、用户历史交易次数、历史交易金额、历史购买演出类型、演出类型、演出时间、演出地点、演出票价,形成csv文件
时间: 2023-09-04 20:07:26 浏览: 147
好的,这是一个比较复杂的爬虫任务,需要使用到 requests、BeautifulSoup、pandas 等库。以下是一个简单的示例代码,仅供参考:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 设置请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 定义一个函数,用于爬取一页数据并返回一个 DataFrame
def get_data(page):
url = 'https://search.damai.cn/searchajax.html?keyword=&cty=&ctl=&sctl=&tsg=0&st=&et=&order=1&pageSize=30&currPage=' + str(page)
resp = requests.get(url, headers=headers)
soup = BeautifulSoup(resp.content, 'html.parser')
# 解析数据
data = []
for item in soup.select('.search__item'):
user_id = item.select_one('.search__item__user').text.strip()
gender = item.select_one('.search__item__sex').text.strip()
age = item.select_one('.search__item__age').text.strip()
location = item.select_one('.search__item__addr').text.strip()
trade_count = item.select_one('.search__item__num').text.strip()
trade_amount = item.select_one('.search__item__money').text.strip()
trade_types = [t.text.strip() for t in item.select('.search__item__type span')]
show_types = [t.text.strip() for t in item.select('.search__item__show__name span')]
show_times = [t.text.strip() for t in item.select('.search__item__show__time span')]
show_locations = [t.text.strip() for t in item.select('.search__item__show__addr span')]
show_prices = [t.text.strip() for t in item.select('.search__item__show__price span')]
data.append([user_id, gender, age, location, trade_count, trade_amount, trade_types, show_types, show_times, show_locations, show_prices])
# 构造 DataFrame
df = pd.DataFrame(data, columns=['user_id', 'gender', 'age', 'location', 'trade_count', 'trade_amount', 'trade_types', 'show_types', 'show_times', 'show_locations', 'show_prices'])
return df
# 爬取前3页数据并保存至 csv 文件
df = pd.concat([get_data(page) for page in range(1, 4)])
df.to_csv('damai.csv', index=False)
```
需要注意的是,为了获取完整的数据,我们需要翻页,这里只爬取了前3页的数据。另外,我们还需要构造一个二维列表来保存演出类型、演出时间、演出地点、演出票价这些信息,因为每个用户可能会有多个历史购买记录。最后,我们使用 pandas 将数据保存至 csv 文件中。
阅读全文