本文首发于我的博客:http://gongyanli.com/
代码传送门:https://github.com/Gladysgong/cninfo/tree/master/cninfo/pdf
前言:之前写过一篇利用文章——PhantomJS+Selenium+Scrapy抓取巨潮资讯网企业信息(一),来抓取巨潮资讯企业基本信息的文章,后来我还需要拿这些企业的年报的PDF文件,所以我试过也用也用上面这种思路去抓取,但是太过复杂,需要动态点击的元素太多,实现起来很麻烦。后来仔细看年报这块儿是通过post请求加参数来发送request,所以就很简单了。
一、思路
第一张图中我们选中了行业和所需要的年度报告,发送请求后会返回列表,里面有所有农业企业年度报告的链接。
第二张图中我们看到了请求的url和所需参数,如图示绿色框所示,所以我们只需要构建这样的请求即可。
query = {
'stock': '',
'searchkey': '',
# 'plate': PLATE,
'plate': '',
'category': CATEGORY,
'trade': '农、林、牧、渔业',
'column': 'szse',
'columnTitle': '历史公告查询',
'pageNum': page_num,
'pageSize': MAX_PAGESIZE,
'tabName': 'fulltext',
'sortName': '',
'sortType': '',
'limit': '',
'showTitle': '',
'seDate': START_DATE + '~' + END_DATE,
}
r = requests.post(URL, query, HEADER, timeout=RESPONSE_TIMEOUT)
不复杂,把请求的返回内容存入csv文件,最后再通过downloader读取csv文件,最后根据csv中的链接把PDF文件下载下来。
二、代码实现
代码我和PhantomJS+Selenium+Scrapy抓取巨潮资讯网企业信息(一)这篇文章的代码放在一起了,放着cninfo的pdf文件中了,感兴趣自己可以看,可以跑起来的。