博客
关于我
pycharm+python+MS SQLSERVER 实战2、实现爬虫程序。
阅读量:394 次
发布时间:2019-03-04

本文共 3373 字,大约阅读时间需要 11 分钟。

爬取老毛桃网站并将数据写入MS SQL SERVER数据库

要实现爬取老毛桃网站并将数据写入MS SQL SERVER数据库,我们可以按照以下步骤进行操作:

  • 安装必要的库在PyCharm中打开终端,输入以下命令安装所需的库:
  • pip install requestspip install beautifulsoup4
    1. 准备代码结构创建一个新文件,将以下代码拷贝到文件中:
    2. import requestsfrom bs4 import BeautifulSoupimport csvimport randomimport timeimport socketimport http.client# SQL连接信息,记得替换为实际数据库信息def insert_data(data):    db = pymssql.connect(host='localhost', user='sa', password='your_password', database='your_database', port=1433)    cursor = db.cursor()    sql = "INSERT INTO t_tq (rq, tq, zgwd, zdwd) VALUES (%s, %s, %s, %s)"    try:        cursor.execute(sql, (data['rq'], data['tq'], data['zgwd'], data['zdwd']))        db.commit()        return data    except Exception as e:        print(f"Error: {e}")        return Nonedef get_page_content(url):    headers = {        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',        'Accept-Encoding': 'gzip, deflate, sdch',        'Accept-Language': 'zh-CN,zh;q=0.8',        'Connection': 'keep-alive',        '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'    }    timeout = random.randint(80, 180)    while True:        try:            response = requests.get(url, headers=headers, timeout=timeout)            response.encoding = 'utf-8'            return response.text        except socket.timeout as e:            print(f"Socket timeout: {e}")            time.sleep(random.randint(8, 15))        except requests.exceptions.RequestException as e:            print(f"Request error: {e}")            time.sleep(random.randint(5, 10))def parse_data(html_text):    item_data = {        'rq': None,        'tq': None,        'zgwd': None,        'zdwd': None    }    soup = BeautifulSoup(html_text, 'html.parser')    container = soup.find('div', {'id': '7d'})    if not container:        return None    ul = container.find('ul')    if not ul:        return None    lis = ul.find_all('li')    for li in lis:        date = li.find('h1').get_text(strip=True)        item_data['rq'] = date        paragraphs = li.find_all('p')        if not paragraphs:            continue        current_p = paragraphs[0]        item_data['tq'] = current_p.get_text(strip=True)        if len(paragraphs) >= 2:            next_p = paragraphs[1]            if next_p.find('span'):                highest_temp = next_p.find('span').get_text(strip=True)                if highest_temp:                    item_data['zgwd'] = highest_temp.replace('℃', '')            elif next_p.find('i'):                lowest_temp = next_p.find('i').get_text(strip=True)                if lowest_temp:                    item_data['zdwd'] = lowest_temp.replace('℃', '')    return item_datadef main():    url = 'http://www.weather.com.cn/weather/101190401.shtml'    try:        html = get_page_content(url)        data = parse_data(html)        if data:            insert_data(data)    except Exception as e:        print(f"Error: {e}")if __name__ == "__main__":    main()
      1. 替换数据库连接信息确保在代码中替换以下数据库连接信息:
        • host:数据库主机地址
        • user:数据库用户名
        • password:数据库密码
        • database:数据库名称
        • port:数据库端口
        1. 运行代码在PyCharm中运行上述脚本,代码将爬取指定的老毛桃网站页面,解析数据并写入MS SQL SERVER数据库。

        2. 处理潜在问题

          • 网络问题:确保你的网络连接正常,超时问题会导致请求失败。
          • 防爬机制:网站可能会检测到爬虫行为,通过设置随机的请求头和延迟来规避。
          • 解析问题:确保BeautifulSoup正确解析HTML结构,可能需要调整CSS选择器。
          • 数据库连接:检查数据库是否存在,用户权限是否正确。

          通过以上步骤,你可以实现爬取老毛桃网站的数据并将其存储到MS SQL SERVER数据库中。

    转载地址:http://sjbr.baihongyu.com/

    你可能感兴趣的文章
    python初步学习-python数据类型-集合(set)
    查看>>
    python列表生成字典_Python中将字典转换为列表的方法
    查看>>
    python列表对应元素合并为列表及判断一个列表是几维
    查看>>
    python列表去重复后按照顺序_从包含不可共元素的Python列表中删除重复元素,同时保留顺序?...
    查看>>
    python列表前几个_python之列表
    查看>>
    python列表元组
    查看>>
    Python列表/元组/字典和集合使用
    查看>>
    python列表 行列选择_python_pandas_dataframe_行列选择_切片操作
    查看>>
    python列表
    查看>>
    python列出当前目录、子目录和文件的脚本
    查看>>
    python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体测管理系统的设计与实现(程序+开题+论文)
    查看>>
    Python切片对象和__getitem__
    查看>>
    python+flask计算机毕业设计高校体育竞赛成绩管理系统的设计与实现(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体育赛事系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体育运动会比赛系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校危化品管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校团委事务管理系统(程序+开题+论文)
    查看>>
    Python切片(%s)
    查看>>
    python+flask计算机毕业设计高校学生选课系统(程序+开题+论文)
    查看>>