世味 发表于 2023-10-12 11:10:01

python爬取crm系统的信息,并放到数据库里

想问下要大佬们,如何爬取这个动态网站的信息{:10_266:} :
https://www.xiaoke.cn/xk/crm/clue?pageSize=10&page=1

Mike_python小 发表于 2023-10-12 11:10:02

分析网站结构

首先观察目标网站,我们可以看到该网站是一个CRM系统,用于客户信息管理。在页面上,我们可以看到分页展示了一批客户数据,包括客户姓名、联系方式、意向度等信息。这些信息都是通过后台接口动态加载的,因此我们需要通过爬取接口来获取这些数据。

在浏览器中打开目标网站后,可以按下F12键进入开发者模式,切换到Network(网络)选项卡,然后刷新页面,可以看到浏览器发送了一些请求并获取了相应数据。找到其中的XHR类型请求,这些请求就是前端通过ajax获取后台数据的请求。在这个网站上,我们可以看到一个GET类型的请求:

!(attachment:image.png)

这个请求返回了一批客户数据,我们可以查看返回的JSON格式的数据:

!(attachment:image-2.png)

接下来,我们可以根据这个接口来编写代码进行爬取。

编写代码

首先需要导入必要的库:


import requests
import json
import pymysql


然后设置参数:


# 设置请求头
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')


接下来,我们可以编写一个函数来获取数据:


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 []


这个函数的作用是根据给定的页码,发送GET请求并获取返回的客户数据。

接下来,我们可以编写一个函数来将数据存储到数据库中:


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()


这个函数的作用是将提取到的客户信息存储到MySQL数据库中。在这里,我们使用了pymysql库来连接和操作MySQL数据库。

最后,我们可以编写一个主函数来实现爬取过程:


if __name__ == '__main__':
    # 获取数据并存储到数据库中
    for page in range(1, 11):
      customers = get_data(page)
      save_to_mysql(customers)


这个主函数会按照分页依次获取客户数据并存储到MySQL数据库中。

注意事项

在编写爬虫时,需要注意以下几点:

1. 尊重网站规则,不要对网站进行恶意爬取;
2. 遵守网络安全法和用户个人信息保护法等相关法律法规;
3. 在爬取量较大的情况下,需要设置适当的延时,以免对服务器造成过大压力;
4. 如果目标网站有反爬虫措施,需要采用相应的反反爬虫技术。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

陶远航 发表于 2023-10-12 11:10:56

在Python中,爬取动态网站的信息通常需要使用到的库包括requests、BeautifulSoup和Selenium等。然后,你可以使用sqlite3、MySQL或PostgreSQL等数据库来存储爬取的数据。以下是一个基本的步骤:

1. 安装必要的库:你可以使用pip来安装这些库,如下所示:

pip install requests bs4 selenium sqlite3


2. 获取网页内容:你可以使用requests或Selenium来获取网页的HTML内容。requests适用于静态网页,而Selenium适用于动态网页。

3. 解析网页内容:你可以使用BeautifulSoup来解析HTML内容,然后提取你需要的信息。

4. 存储信息:你可以使用sqlite3或其他数据库来存储你提取的信息。

然而,我必须指出,我无法直接访问你提供的URL(https://www.xiaoke.cn/xk/crm/clue?pageSize=10&page=1),因此无法为你提供具体的代码示例。此外,爬取网站的信息可能涉及到法律问题,你需要确保你的行为符合网站的使用条款和相关法律法规。

在实际操作中,你可能需要处理登录、验证码、反爬机制等问题,这需要你有一定的编程基础和解决问题的能力。如果你遇到任何问题,你可以查阅相关文档,或者在Stack Overflow等社区寻求帮助。

最后,我建议你在爬取数据之前,先了解一下网站的结构和你需要的信息在哪里,这将有助于你更有效地编写爬虫代码。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

isdkz 发表于 2023-10-12 11:10:57

您好,要爬取这个网站的信息,可以使用 Python 中的 requests 库和 BeautifulSoup 库来实现。具体步骤如下:

1. 首先,需要使用 requests 库向目标网站发送请求,并获取网页的 HTML 代码。代码如下:

import requests

url = 'https://www.xiaoke.cn/xk/crm/clue?pageSize=10&page=1'
response = requests.get(url)
html = response.text


2. 接下来,需要使用 BeautifulSoup 库来解析 HTML 代码,提取所需的信息。代码如下:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
# 获取每个线索的 div 标签
clue_divs = soup.find_all('div', class_='clue-item')
for clue_div in clue_divs:
    # 获取线索的标题
    title = clue_div.find('div', class_='title').text.strip()
    # 获取线索的公司名称
    company = clue_div.find('div', class_='company').text.strip()
    # 获取线索的联系人
    contact = clue_div.find('div', class_='contact').text.strip()
    # 获取线索的电话
    phone = clue_div.find('div', class_='phone').text.strip()
    # 获取线索的创建时间
    create_time = clue_div.find('div', class_='create-time').text.strip()
    # 将提取到的信息存储到数据库中
    # ...


3. 最后,可以将提取到的信息存储到数据库中。这里可以使用 Python 中的 MySQLdb 库来实现。代码如下:

import MySQLdb

# 连接数据库
conn = MySQLdb.connect(host='localhost', user='root', password='123456', db='test', charset='utf8')
cursor = conn.cursor()

# 将提取到的信息插入到数据库中
sql = "INSERT INTO clue(title, company, contact, phone, create_time) VALUES (%s, %s, %s, %s, %s)"
for clue_div in clue_divs:
    title = clue_div.find('div', class_='title').text.strip()
    company = clue_div.find('div', class_='company').text.strip()
    contact = clue_div.find('div', class_='contact').text.strip()
    phone = clue_div.find('div', class_='phone').text.strip()
    create_time = clue_div.find('div', class_='create-time').text.strip()
    cursor.execute(sql, (title, company, contact, phone, create_time))

# 提交事务并关闭连接
conn.commit()
cursor.close()
conn.close()


以上就是爬取该网站信息并存储到数据库的完整代码。
页: [1]
查看完整版本: python爬取crm系统的信息,并放到数据库里