1. 程式人生 > >爬蟲學習筆記--用selenium 爬資料到Mysql

爬蟲學習筆記--用selenium 爬資料到Mysql

# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import MySQLdb;
import sys
import time
reload(sys)
sys.setdefaultencoding('utf-8')

con = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='xiehui',charset="utf8")
cur = con.cursor()

fp = webdriver.FirefoxProfile()
fp.set_preference("permissions.default.stylesheet",2)
fp.set_preference("permissions.default.image",2)
app = webdriver.Firefox(firefox_profile=fp)
app.get("http://www.baidu.com")

search_handle = app.current_window_handle
print str(search_handle) + "------"

search = app.find_element_by_xpath(".//*[@id='kw']")
search.clear()
search.send_keys("songganaiyi")
searbtn = app.find_element_by_xpath(".//*[@id='su']").send_keys(Keys.ENTER)

time.sleep(3)
xiehuicitiao = app.find_element_by_xpath(".//*[@id='1']/h3/a")
xiehuicitiao.click()
time.sleep(3)
all_handle = app.window_handles
print str(all_handle)+"-----------"
for handle in all_handle:
    if handle != search_handle:
        app.switch_to.window(handle)
        # print app.title
        # print app.current_url
        contents = app.find_elements_by_css_selector('div.para')
        for para in contents:
            print str(para.text).strip()
            cur.execute('insert into paras (para) values("%s");' % (str(para.text).strip()))
        cur.close()
        con.commit()
    elif handle == search_handle:
        print "error-----"

app.quit()

這裡我用selenium模擬瀏覽器 爬取百度詞條裡的內容 儲存到Mysql

有幾個說明的地方 

1.中文編碼 在Pycharm裡有時會亂碼 加上

# -*- coding:utf-8 -*-

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

2.python 安裝 mysql的庫 會有錯 具體請看 這篇文章下載安裝

 http://www.mamicode.com/info-detail-1222077.html

3.mysql 在插入過程中 我遇到了 字串有 單分號的 情況 這時會插入失敗 

因此 插入語句 這裡請用雙引號

values("%s")