赞
踩
- 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()
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。