分析网站结构
首先观察目标网站,我们可以看到该网站是一个CRM系统,用于客户信息管理。在页面上,我们可以看到分页展示了一批客户数据,包括客户姓名、联系方式、意向度等信息。这些信息都是通过后台接口动态加载的,因此我们需要通过爬取接口来获取这些数据。
在浏览器中打开目标网站后,可以按下F12键进入开发者模式,切换到Network(网络)选项卡,然后刷新页面,可以看到浏览器发送了一些请求并获取了相应数据。找到其中的XHR类型请求,这些请求就是前端通过ajax获取后台数据的请求。在这个网站上,我们可以看到一个GET类型的请求:
![image.png](attachment:image.png)
这个请求返回了一批客户数据,我们可以查看返回的JSON格式的数据:
![image-2.png](attachment:image-2.png)
接下来,我们可以根据这个接口来编写代码进行爬取。
编写代码
首先需要导入必要的库:
[/code]
import requests
import json
import pymysql
[/code]
然后设置参数:
[/code]
# 设置请求头
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'}
# 设置请求地址
url = 'https://www.xiaoke.cn/xk/crm/clue?pageSize=10&page='
# 设置数据库连接参数
conn = pymysql.connect(host='localhost', user='root', password='123456', db='test', charset='utf8')
[/code]
接下来,我们可以编写一个函数来获取数据:
[/code]
def get_data(page):
# 构造请求地址
page_url = url + str(page)
try:
# 发送GET请求
response = requests.get(page_url, headers=headers)
# 解析JSON格式数据
data = json.loads(response.text)
# 提取客户信息
customers = data['data']['clues']
return customers
except:
print('获取数据失败!')
return []
[/code]
这个函数的作用是根据给定的页码,发送GET请求并获取返回的客户数据。
接下来,我们可以编写一个函数来将数据存储到数据库中:
[/code]
def save_to_mysql(customers):
# 获取数据库游标
cur = conn.cursor()
try:
# 遍历客户信息列表
for customer in customers:
# 提取客户信息
name = customer.get('customerName', '')
phone = customer.get('phone', '')
level = customer.get('level', '')
intention = customer.get('intention', '')
remark = customer.get('remark', '')
# 将客户信息插入数据库
sql = "INSERT INTO customers (name, phone, level, intention, remark) VALUES ('%s', '%s', '%s', '%s', '%s')" % (
name, phone, level, intention, remark)
cur.execute(sql)
# 提交事务
conn.commit()
print('数据保存成功!')
except Exception as e:
# 回滚事务
conn.rollback()
print('数据保存失败:', e)
finally:
# 关闭游标和连接
cur.close()
conn.close()
[/code]
这个函数的作用是将提取到的客户信息存储到MySQL数据库中。在这里,我们使用了pymysql库来连接和操作MySQL数据库。
最后,我们可以编写一个主函数来实现爬取过程:
[/code]
if __name__ == '__main__':
# 获取数据并存储到数据库中
for page in range(1, 11):
customers = get_data(page)
save_to_mysql(customers)
[/code]
这个主函数会按照分页依次获取客户数据并存储到MySQL数据库中。
注意事项
在编写爬虫时,需要注意以下几点:
1. 尊重网站规则,不要对网站进行恶意爬取;
2. 遵守网络安全法和用户个人信息保护法等相关法律法规;
3. 在爬取量较大的情况下,需要设置适当的延时,以免对服务器造成过大压力;
4. 如果目标网站有反爬虫措施,需要采用相应的反反爬虫技术。
球一个最佳答案谢谢啦!这对我非常重要!