问财网爬虫

    技术2026-02-06  4

    问财网

    问财网每一个的爬虫的数目不一样,页数不一样,难度比较大

    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

    Processed: 0.014, SQL: 9