爬虫抓取网页数据( 从HttpFox的POSTData项看到(图)Data(组图) )
优采云 发布时间: 2022-04-17 14:38爬虫抓取网页数据(
从HttpFox的POSTData项看到(图)Data(组图)
)
#表示删不去这一行,这个代码框框啊 啊啊啊啊啊
一、作为python爬虫,在爬取数据之前,一般需要对网页进行简单的分析。这里推荐火狐的HttpFox,简单实用。
如下图,来自巨潮资讯网,通过查询显示想要的数据,然后抓取。
二、爬取查询数据,查询的类型表示需要post过去的相关数据才能得到想要的数据。
通过HttpFox分析,获取相关数据,post过去的数据比较复杂。从 HttpFox 的 POST Data 项中可以看到如下一大串信息:
stock=&searchkey=&plate=sz%3Bszmb%3Bszzx%3Bszcy%3Bshmb%3B&category=category_sjdbg_szsh%3Bcategory_ndbg_szsh
%3Bcategory_bndbg_szsh%3Bcategory_yjdbg_szsh%3B&trade=&column=szse&columnTitle=%E5%8E%86%E5%8F%B2%E5%85
%AC%E5%91%8A%E6%9F%A5%E8%AF%A2&pageNum=1&pageSize=30&tabName=fulltext&sortName=&sortType=&limit=&showTitle
category_sjdbg_szsh%2Fcategory%2F%E4%B8%89%E5%AD%A3%E5%BA%A6%E6%8A%A5%E5%91%8A%3Bcategory_ndbg_szsh
%2Fcategory%2F%E5%B9%B4%E5%BA%A6%E6%8A%A5%E5%91%8A%3Bcategory_bndbg_szsh%2Fcategory%2F%E5%8D%8A%
E5%B9%B4%E5%BA%A6%E6%8A%A5%E5%91%8A%3Bcategory_yjdbg_szsh%2Fcategory%2F%E4%B8%80%E5%AD%A3%E5
%BA%A6%E6%8A%A5%E5%91%8A%3Bsz%2Fplate%2F%E6%B7%B1%E5%B8%82%E5%85%AC%E5%8F%B8% 3Bszmb%2F盘
%2F%E6%B7%B1%E5%B8%82%E4%B8%BB%E6%9D%BF%3Bszzx%2Fplate%2F%E4%B8%AD%E5%B0%8F%E6% 9D%BF%3Bszcy
%2Fplate%2F%E5%88%9B%E4%B8%9A%E6%9D%BF%3Bshmb%2Fplate%2F%E6%B2%AA%E5%B8%82%E4%B8%BB% E6%9D%B
F&seDate=2016-10-13
我想专注于捕获第一季度、半年、第三季度和年度的年度报告。查看类别选择:
category=category_sjdbg_szsh%3Bcategory_ndbg_szsh%3Bcategory_bndbg_szsh
%3Bcategory_yjdbg_szsh%3B
有了这么复杂的帖子数据,我不知道如何构建自己的帖子数据项。特别是当某个后置变量取多个值时。注意:%3B 是一个 URL 编码值,表示分号“;”。这样一个变量的多值问题就解决了。
#-*- coding: utf8 -*-
import urllib2
import urllib
import re
import time,datetime
import os
import shutil
def getstock(page,strdate):
values = {
'stock':'',
'searchkey':'',
'plate':'sz;szmb;szzx;szcy;shmb',
#%category_bndbg_szsh半年报告;category_sjdbg_szsh三季度;category_ndbg_szsh年度;category_yjdbg_szsh一季度
'category':'category_bndbg_szsh;category_sjdbg_szsh;category_ndbg_szsh;category_yjdbg_szsh',
'trade':'',
'column':'szse',
'columnTitle':'%E5%8E%86%E5%8F%B2%E5%85%AC%E5%91%8A%E6%9F%A5%E8%AF%A2',
'pageNum':page,
'pageSize':'50',
'tabName':'fulltext',
'sortName':'',
'sortType':'',
'limit':'',
'seDate':strdate}
data = urllib.urlencode(values)
url = "http://www.cninfo.com.cn/cninfo-new/announcement/query"
request = urllib2.Request(url,data)
datime = datetime.datetime.now()
response = urllib2.urlopen(request,timeout=4)
re_data = response.read()
re_data = re_data.decode('utf8')
dict_data = eval(re_data.replace('null','None').replace('true','True').replace('false','False'))
print dict_data #转成dict数据,输出看看
return dict_data
try:
date2 = time.strftime('%Y-%m-%d', time.localtime())
page = 1
ret = getstock(str(page),str(date2))
except Exception as error:
print error
good luck!