闲暇之余,利用Python爬虫爬取下京东金融的基金信息,感兴趣的小伙伴可以看看,有什么关于代码的交流可以加我微信:
qqtxw128
#__author:"tangxiaowen"
#date:2018/9/28
import requests
from lxml import etree
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import csv
import time
import chardet
def get_page(url):
dr = webdriver.PhantomJS()
dr.get(url)
get_next(dr)
def get_next(dr):
res = dr.page_source.encode().decode('utf-8')
html = etree.HTML(res)
for i in range(1, 11): #通过观察网站HTML可以发展每一个网页一共有11个tr标签
gupiao = [] #创建一个列表,存储一只基金的信息
#利用xpath解析想要获取的信息
a = html.xpath('/html/body/div[5]/div[2]/div[1]/div[2]/table/tbody/tr[{}]/td[1]/a/text()'.format(str(i)))
span = html.xpath('/html/body/div[5]/div[2]/div[1]/div[2]/table/tbody/tr[{}]/td[1]/span/text()'.format(str(i)))
tr = html.xpath('/html/body/div[5]/div[2]/div[1]/div[2]/table/tbody/tr[{}]/td/text()'.format(str(i)))
#把所有的信息追加到一个列表当中
gupiao.append(a[0])
gupiao.append(span[0])
gupiao.extend(tr)
#我们以CSV的格式存储,便于以后对基金信息的分析
with open('JD.csv', 'a', encoding='gbk') as f:
# filename = ['基金名称','代码','单位净值','近1周','近1月','近3月','近6月','近1年','近3年','今年以来','近一年定投']
writer = csv.writer(f)
# writer.writerow(filename)
writer.writerow(gupiao)
try:
dr.find_element_by_class_name('down-page').click()
time.sleep(2)
return get_next(dr)
#不停的加载下一页,直到找不到下一页为止,捕获异常,程序结束
except NoSuchElementException as e:
print(e)
print("没有找到下一页")
return
if __name__=="__main__":
url = 'http://fund.jd.com/'
get_page(url)
京东金融网页利用AJAX渲染过得,由于本人愚钝,暂时没有找到url的规律,所有利用python爬虫的终极武器,selenium + PJ。
如果有哪位小伙伴知道它的url规律,还请告知;非常感谢!