selenium 淘宝爬虫(需要扫码登录一下)

from selenium import webdriver
import time
import re

def gethtml(url):
    '''定义函数获取html源代码'''
    '''由于淘宝是动态网页无法用requests库获取所以使用selenium模拟器'''
    driver=webdriver.Chrome()#构造一个Chrom浏览器对象用来控制浏览器
    driver.get(url)#根据具体的url访问网页
    # 第一种滑块验证,人工操作
    i3 = driver.find_element_by_css_selector('#login > div.corner-icon-view.view-type-qrcode > i')
    i3.click()
    time.sleep(15)  # 等待15秒,用来扫码(人工操作)
    '''将进度条拉到页面最后'''
    try:
        js = 'var q=document.documentElement.scrollTop=10000'
        driver.execute_script(js)  # execute_script()函数运行js下滑脚本
    except:
        print('出现错误')
    html = driver.page_source #获取网页源代码
    driver.close()#关闭浏览器
    print('关闭浏览器')
    #print(html)
    return html

def xieru(html):
    with open("C:\\Users\86666\Desktop\python文件处理\钓鱼.html",'at',encoding='utf-8')as wenjian:
        wenjian.write(html)
        print('写入成功')
    with open('C:\\Users\86666\Desktop\python文件处理\钓鱼.html','rt',encoding='utf-8')as j:
        html2=j.read()
    return html2


def tiqu(list,html2):
    '''从获得到的网页中提取需要的信息'''
    try:
        '''提取商品名称'''
        zhengze=re.compile(r'"raw_title":".{0,40}",')#用re.compile()函数将正则表达式的字符串转化(编译)为正则表达式对象用于多次操作
        '''获得付款人数'''
        zhengze1=re.compile(r'"view_sales":".{0,30}",')
        l1=zhengze.findall(html2)
        l2=zhengze1.findall(html2)
    except:
        print('出现错误')
    if len(l1)==len(l2):
        for i in range(len(l1)):
            u=eval(l1[i].split(':')[1])
            u2=eval(l2[i].split(':')[1])
            list.append([u,u2])
    print('打印列表')
    return list

def print1(list2):
    '''按规则打印'''
    print('{0:<35}\t\t\t\t\t{1:<12}'.format('付款人数','产品名称'),chr(12288))
    for i in range(len(list2)):
        print('{0:<35}\t\t\t\t\t{1:<12}'.format(str(list2[i][0][0]),str(list2[i][1][0])),chr(12288))





def main():
    list=[]
    url=('https://s.taobao.com/search?q=%E9%B1%BC%E7%AB%BF&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306')
    html=gethtml(url)
    xieru(html)
    html2=xieru(html)
    list2=tiqu(list,html2)
    print(list2)
    print1(list2)


main()

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值