`

python+BeautifulSoup+selenium+mysqldb完成数据抓取

阅读更多
# coding=utf-8
'''
Created on 2017年2月20日

@author: chenkai
'''
import MySQLdb
import sys
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.remote import webelement
from selenium.webdriver.remote.webelement import WebElement
'''
连接数据库
'''
def getConn():
    host ='127.0.0.1'
    user ='root'
    passwd ='123456'
    port = 3306
    dbcon=MySQLdb.connect(host,user,passwd,port=3306,charset="utf8")
    return dbcon
def getCursor(mysqlConn):
    return mysqlConn.cursor()
def closeDBConnandCur(cur,mysqlConn):
    cur.close()
    mysqlConn.commit() #加上这句,关闭数据库连接前提交数据库操作
    mysqlConn.close()
#连接数据库
mysqlConn=getConn()
#得道curser
cur=getCursor(mysqlConn)
#使用test数据库
cur.execute("use test")

'''
浏览器
'''
options=webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors"])
driver=webdriver.Chrome(executable_path="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe",chrome_options=options)  #调用chrome浏览器
#print dir(driver)
driver.get('https://sanya.nuomi.com/326')
#点击按钮
#driver.find_element_by_class_name("next-btn").click()
#
page = driver.page_source
# print(page)
# print type(page)
#
soup = BeautifulSoup(page,'html.parser',from_encoding="utf-8")
# print soup.prettify()
#
div_list=soup.find_all("div", class_="contentbox")
shopUrl=""
shopName=""
index=1001
for con in div_list:
    index+=1
    shopUrl=("https:"+con.a.get("href")).encode('utf-8')#转码,插入mysql后不会乱码
    shopName=(con.h4.get_text()).encode('utf-8')
#     shopUrl.encode('utf-8')
#     shopName.encode('utf-8')
    print shopUrl,shopName
    print 'insert into  k_bdnm_shopinfo values(%d,%s,%s)'%(index,shopUrl,shopName)
    try:
        cur.execute("insert into  k_bdnm_shopinfo values(%d,'%s','%s')"%(index,shopUrl,shopName))
    except MySQLdb.Error, e: 
            print "Mysql Error %d: %s" % (e.args[0], e.args[1])
       
driver.quit()
closeDBConnandCur(cur,mysqlConn)#关闭游标和数据库连接

'''
数据表信息
'''
CREATE TABLE `k_bdnm_shopinfo` (
  `shop_id` int(11) NOT NULL auto_increment,
  `shop_url` varchar(300) NOT NULL,
  `shop_name` varchar(100) NOT NULL,
  PRIMARY KEY  (`shop_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

分享到:
评论

相关推荐

    Python抓取京东数据

    ### Python抓取京东数据知识点详解 #### 一、项目背景与目标 本项目旨在通过Python爬虫技术抓取京东网站的商品评论数据,并将其存储至MySQL数据库中,方便后续的数据分析和挖掘工作。该项目重点关注京东图书商品的...

    Python抓取京东图书评论数据

    以购买日期为例,使用Python + Mysql的搭配进行实现,程序不大,才100行。相关的解释我都在程序里加注了: from selenium import webdriver from bs4 import BeautifulSoup import re import win32com.client import...

    python爬虫(爬视频带数据库)

    Python爬虫技术是一种用于自动化获取网页数据的编程技术,它能高效地遍历网络上的大量信息,尤其在处理视频资源时,结合数据库的使用,可以实现视频数据的存储与检索。在这个项目中,我们将深入探讨如何使用Python...

    python从最基础的语法历经网络基础、前端基础、后端基础和爬虫与数据基础走向机器学习.zip

    "爬虫与数据基础"是指Python在数据抓取和预处理中的应用。BeautifulSoup、Scrapy等库能高效地爬取网页数据,而Requests库可以处理网络请求。获取数据后,Pandas库提供了强大的数据清洗、分析和转换功能。正则表达式...

    PythonCrawler-master_网络爬虫最新教程_python_

    本教程"PythonCrawler-master"旨在教授如何利用Python进行网页数据的抓取和处理。教程涵盖了网络爬虫的基础知识,包括HTML解析、HTTP请求、数据存储等核心内容,同时也涉及了一些高级技巧,如模拟登录、反爬虫策略和...

    Python网络爬虫技术 完整教案.docx

    - **连接与操作**:使用Python MySQLdb或pymysql模块进行连接和数据操作。 - **MongoDB**: - **安装**:通过命令行安装MongoDB服务端。 - **配置**:创建数据库、集合。 - **连接与操作**:使用PyMongo库进行...

    基于python的rpa管理系统 (19).zip

    Python提供了多种数据库接口,如SQLite、MySQLdb等,可以方便地进行数据存取。 9. **测试与调试**:RPA系统的可靠性依赖于充分的测试。单元测试、集成测试和端到端测试是必要的,Python的unittest和pytest框架可以...

    Train_Tickets_v1.0.zip

    Python提供了多种数据处理库,如Pandas用于数据清洗和分析,MySQLdb或pymysql用于数据库操作,JSON和CSV则用于数据序列化和导出。 在实际的爬虫项目中,我们还需要学习如何处理异常、进行多线程或多进程爬取以提高...

    直播后台web自动化,python

    在直播后台Web自动化中,Python常用于编写自动化脚本,如使用Selenium、Requests等库进行网页操作和数据抓取。Python的丰富的库支持使得它成为自动化测试的理想选择。 2. **前端技术理解**:在自动化过程中,理解...

    grabers_amigo_graber

    9. **数据存储**: 抓取到的数据通常需要存储,Python提供了许多库如pandas、sqlite3、MySQLdb等,用于将数据保存到CSV、数据库等不同格式。 10. **IP代理**: 防止因频繁请求被目标网站封禁,使用IP代理池可以切换IP...

Global site tag (gtag.js) - Google Analytics