爬取到内容插入数据库没显示出来,是不是哪里写错了,弄不明白
import re
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pyquery import PyQuery as pq
from selenium.webdriver import ActionChains
import time
import pymysql
#建立连接
db = pymysql.connect(host='localhost', user='root', password='123456', db='taobao', port=3306, charset='utf8')
cursor = db.cursor() # 建立游标
from lxml import etree
#通过制定chromedriver的路径来实例化driver对象,chromedriver放在当前目录
driver = webdriver.Chrome()
# 控制浏览器访问url地址
driver.get("https://www.taobao.com/")
# 元素定位
# 搜索关键字
# driver.find_element(by=By.ID, value='kw').send_keys('python+selenium')
# 点击登录
driver.find_element(by=By.XPATH,
value='/html/body/div[3]/div[2]/div[2]/div[2]/div[5]/div/div[2]/div[1]/a[1]').click()
time.sleep(6)
# 获取窗口句柄
handles = driver.window_handles
# 切换到最新打开的窗口
driver.switch_to.window(handles[-1])
driver.find_element(by=By.ID, value='fm-login-id').send_keys('1')
driver.find_element(by=By.ID, value='fm-login-password').send_keys('1')
driver.find_element(by=By.XPATH,
value='/html/body/div/div[2]/div[3]/div/div/div/div[2]/div/form/div[4]/button').click()
time.sleep(6)
# 切换frame
driver.switch_to.frame('baxia-dialog-content')
# 找到滑块,获取宽高
el1 = driver.find_element(by=By.XPATH, value='//*[@id="nc_1_n1z"]')
print(el1.size['width'])
print(el1.size['height'])
# 找到滑动区域,获得宽高
el2 = driver.find_element(by=By.XPATH, value='//*[@id="nc_1__scale_text"]')
print(el2.size['width'])
print(el2.size['height'])
time.sleep(2)
driver.maximize_window() # 窗口最大化(不然找不到"登录")
# 创建一个事件链对象
chains = ActionChains(driver)
# 实现滑块拖动
chains.drag_and_drop_by_offset(el1, el2.size['width'], -el2.size['height'])
# 事件提交
chains.perform()
# driver.close()
# 退出浏览器
# driver.quit()
wait = WebDriverWait(driver, 10)
def get_products():
# wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-itemlist.items.item')))#加载宝贝信息并等待
html = driver.page_source
doc = pq(html)
items = doc('#mainsrp-itemlist .items .item').items() # 得到所有宝贝的内容
for item in items:
product = {
'image': item.find('.pic .img').attr('data-src'), # 图片链接
'price': item.find('.price').text(), # 商品价格
'deal': item.find('.deal-cnt').text()[:-3], # 付款人数,-3是为了去掉人付款这几个字
'title': item.find('.title').text(), # 商品名称
'shop': item.find('.shop').text(), # 店铺名称
'location': item.find('.location').text()
}
s7 = [product['image'], product['price'], product['deal'], product['title'], product['shop'], product['location']]
print(product)
for i in range(len(s7)):
#stock = s7[i].replace('‘', "")
#STOCK1 = list(stock.replace("'", "").split(",")) # 把“替换为空格,以,为分隔符分割
# 用sql语言写入数据表
sql1 = """
insert into taobao1(
image,
price,
deal,
title,
shop,
location)value('%s','%s','%s','%s','%s','%s')
""" % (
s7[0], s7[1], s7[2], s7[3], s7[4], s7[5]) # 将值插入到占位符%s
# 执行 insert 增加的语句 如果出现异常对异常处理
#'''try:
# cursor.execute(sql1)
#db.commit() # 进行数据库提交,写入数据库
#except:
# cursor.rollback() # 数据回滚,多次操作要么都执行,要么都不执行
# print('写入失败')'''
# 关闭游标连接
cursor.close()
# 关闭数据库连接
db.close()
print('写入成功!')
driver.find_element(by=By.CSS_SELECTOR,
value='#mainsrp-pager>div>div>div>ul>li.item.next>a').click()
#submit1 = wait.until(
#EC.element_to_be_clickable((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > ul > li.item.next > a')))
#submit1.click()
def fanye():
input1 = driver.find_element(by=By.XPATH,
value='//*[@id="mainsrp-pager"]/div/div/div/div[2]/input').get_attribute("value")
INPUT1 = int(input1)
if INPUT1<101:
get_products()
fanye()
def search():
try:
input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#q")))
submit = wait.until(
EC.element_to_be_clickable((By.CSS_SELECTOR, '#J_TSearchForm > div.search-button > button')))
input.send_keys('美食')
submit.click()
total = wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.total')))
fanye()
return total.text
except:
search()
def main():
search()
# 用来写csv文件的标题
start_csv = True
#total1 = int(re.compile('(\d+)').search(total).group(1)) # 转换为数值型
#print(total1)
if __name__ == '__main__':
main()
运行不会报错,只是数据没有成功插入
集合,列表处理
能正常插入数据
把这几行的注释打开
```
'''try:
# cursor.execute(sql1)
#db.commit() # 进行数据库提交,写入数据库
#except:
# cursor.rollback() # 数据回滚,多次操作要么都执行,要么都不执行
# print('写入失败')''' ```