问财网
问财网每一个的爬虫的数目不一样,页数不一样,难度比较大
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from pandas import DataFrame
import pandas as pd
import numpy as np
import re
import time
browse=webdriver.Chrome() #打开Chrome
a='http://www.iwencai.com/stockpick/search?typed=1&preParams=&ts=1&f=1&qs=result_rewrite&selfsectsn=&querytype=stock&searchfilter=&tid=stockpick&w=2019.10.14涨停&queryarea='
browse.get(a) #打开问财网
def page(n):
page_n=DataFrame()
Name=[]
for i in range(n):
try:
mm='http://www.iwencai.com/stockpick/search?ts=1&f=1&qs=stockhome_topbar_click&w=2019.10.{}%E6%B6%A8%E5%81%9C'.format(i+1)
browse.get(mm)
#print(aaaa)
#df_page=wed(mm)
Whe=browse.find_element_by_xpath('//*[@id="qinfo"]/div[1]/div/div[1]/div').text #获取日期和每天有多少条数据,数据为"2019年9月30日的涨停 (21 个)"
Name.append(Whe) #
#page_n=page_n.append(df_page,ignore_index=False)
except:
pass
return DataFrame ,Name
b1=page(30)
b2=np.array(b1) #改变数据格式
b3=pd.Series(b2)
b4=b3[1]
b5=[]
for i in range(30):
b5.append(b4[i].split()) #将日期和数据的条数切分开
b6=[]
for i in range(30):
b6.append(b5[i][0]) #b6 为日期
b7=[]
for i in range(30):
b7.append(re.sub('的涨停','',b6[i])) #利用正则删除'的涨停'
b8=[]
for i in range(30):
b8.append(b5[i][1]) # b8为数据的行数(条数)
b9=[]
for i in range(30):
b9.append(re.sub('(','',b8[i])) #利用正则删除'('
b10=[]
for i in range(30):
b10.append(int(b9[i])-1) #因为range函数从 0 开始 所以所有数减 1
b11=pd.Series(b10)
b11
# b11[13]=69 #应为超过70条(一页)的数据只有 第14天,和第28天,我直接利用简单的方法(手动下一页) :见 data2、data3
# b11[27]=69 #将 14、28天设为69、也就是一页
# b11[30]=3
# b11[31]=69
# b11[32]=18
def fff(y):
page_n=DataFrame()
for i in range(y):
if b11[i]<=69:
#f.append(b[i])
#page_n=DataFrame()
mm='http://www.iwencai.com/stockpick/search?ts=1&f=1&qs=stockhome_topbar_click&w=2019.10.{}%E6%B6%A8%E5%81%9C'.format(i+1)
browse.get(mm)
dd=b11[i]
v=i
e1=page1(dd,v)
page_n=page_n.append(e1,ignore_index=False)
#return page_n
elif 69<b11[i]<=138:
#page_n=DataFrame()
mm='http://www.iwencai.com/stockpick/search?ts=1&f=1&qs=stockhome_topbar_click&w=2019.10.{}%E6%B6%A8%E5%81%9C'.format(i+1)
browse.get(mm)
sse=b11[i]
e2=page1(69,i)
time.sleep(5)
browse.find_element_by_xpath('//*[@id="next"]').click()
time.sleep(3)
sse2=b11[i]-69
e3=page1(sse2,i)
page_n=page_n.append([e2,e3],ignore_index=True)
return page_n