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()