如何用pyrhon爬取网站https://www.damai.cn/的用户ID、性别、年龄、地域、用户历史交易次数、历史交易金额、历史购买演出类型、演出类型、演出时间、演出地点、演出票价,形成csv文件
时间: 2023-09-04 16:12:14 浏览: 234
要爬取这个网站的信息,我们需要了解该网站的结构和请求方式。通过检查该网站的源代码,可以发现该网站使用Ajax动态加载,因此我们需要使用Python的爬虫框架来模拟浏览器发送Ajax请求,并解析响应内容。
以下是爬取该网站信息的步骤:
1. 安装必要的Python库:requests、BeautifulSoup、pandas
```python
pip install requests
pip install beautifulsoup4
pip install pandas
```
2. 分析Ajax请求
通过浏览器开发者工具可以发现,该网站的用户信息是通过发送Ajax请求获取的。我们可以通过分析Ajax请求的URL和参数,来构造请求数据。
例如,获取用户信息的Ajax请求URL为:https://search.damai.cn/searchajax.html
请求参数包括:keyword(关键词)、pageIndex(页码)、pageSize(每页的记录数)等。
```python
import requests
import json
url = 'https://search.damai.cn/searchajax.html'
params = {
'keyword': '',
'ctl': '',
'sctl': '',
'tsg': '',
'order': '',
'pageSize': 30,
'pageIndex': 1,
'currPage': 1,
'tn': ''
}
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Referer': 'https://search.damai.cn/search.htm',
'X-Requested-With': 'XMLHttpRequest'
}
response = requests.post(url, headers=headers, data=params)
print(response.json())
```
3. 解析响应内容
通过分析响应内容,可以发现每个用户的信息都存储在一个HTML节点中。我们可以使用BeautifulSoup库来解析HTML,并提取用户信息。
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
user_list = soup.select('.search__content .items .item')
for user in user_list:
user_id = user.select_one('.item__id').text
gender = user.select_one('.item__gender').text
age = user.select_one('.item__age').text
region = user.select_one('.item__region').text
trade_count = user.select_one('.item__trade-count').text
trade_amount = user.select_one('.item__trade-amount').text
trade_types = [t.text for t in user.select('.item__trade-types span')]
show_types = [t.text for t in user.select('.item__show-types span')]
show_time = user.select_one('.item__show-time').text
show_location = user.select_one('.item__show-location').text
show_price = user.select_one('.item__show-price').text
print(user_id, gender, age, region, trade_count, trade_amount, trade_types, show_types, show_time, show_location, show_price)
```
4. 将数据保存为CSV文件
最后,我们可以使用pandas库将数据保存为CSV文件。
```python
import pandas as pd
df = pd.DataFrame({
'用户ID': user_id_list,
'性别': gender_list,
'年龄': age_list,
'地域': region_list,
'历史交易次数': trade_count_list,
'历史交易金额': trade_amount_list,
'历史购买演出类型': trade_types_list,
'演出类型': show_types_list,
'演出时间': show_time_list,
'演出地点': show_location_list,
'演出票价': show_price_list
})
df.to_csv('user_info.csv', index=False)
```
阅读全文