当遇到JS渲染时,很难找到正确的url,上交所就是一个比较典型的例子。在doc和xhr也没找到入口,最后在js中找到。成功以后即可进行后面数据爬取和分析。数据可视化部分下周抽时间写,最近在公司写Java爬虫,做信贷方面大数据分析,对爬虫归类和识别正确的入口很重要,其次就是总页数,下一页,解析页(自己写来玩就没必要了)。这样做的目的可以在框架下产生大量爬虫,在加上批处理,很吓人。
找到对应js后,查看请求头里面的url,
# -*- coding: utf-8 -*-
"""
@author: yyl
"""
import requests
from urllib.parse import quote
import time
from random import sample,choice
headers = {
'User-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36',
'Referer': 'http://www.sse.com.cn/assortment/stock/list/share/'
}
#请求页面
def requests_one_page(url,parmas):
try:
r = requests.get(url, headers=headers)
print(r.text)
except:
print("error")
def main():
url = "http://query.sse.com.cn/security/stock/getStockListData2.do?&jsonCallBack=jsonpCallback59522&isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=1&pageHelp.pageSize=25&pageHelp.pageNo=1&_=1564755528542"
parmas = {'callback': 'fetchJSON_comment98vv402',
'productId': '100003671742',
'score': '0',
'sortType': '5',
'page': '0',
'pageSize': '10',
'isShadowSku': '0',
'fold': '1',
'jsonCallBack': 'jsonpCallback59522',
'isPagination':'true',
'pageHelp.cacheSize': '1',
'pageHelp.beginPage': '1',
'pageHelp.pageSize': '25',
'pageHelp.pageNo': '1',
'_': '1564755528542'
}
requests_one_page(url,parmas)
if __name__=="__main__":
#main()
s=time.time()
main()
e=time.time()
print("完成!!时间为:{}".format(e-s))