问财网每一个的爬虫的数目不一样,页数不一样,难度比较大
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