爬虫抓取网页数据( 从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!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线