python爬虫---post抓取查询数据简单说明

#表示删不去这一行,这个代码框框啊  啊啊啊啊啊

一、做python爬虫,在爬取数据前,一般需要对网页进行简单分析。这里推荐用火狐的HttpFox,简单实用。
如下图,巨潮信息网的,通过查询显示想要的数据,然后抓取下来。

      

二、爬取查询数据,查询类型的,说明是要post相关数据过去才能get到想要的数据。

通过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%2Fplate

%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

这么复杂的post数据,根本不知道怎么构建自己的post数据项。特别是某个某个post变量是取多个值时。注意到%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!




  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Scrapy 是 Python 中一个强大的开源网络爬虫框架,可用于从网站上抓取数据。它实现了异步网络爬取、分布式爬取、自动限速、数据存储等功能,而且易于扩展。Ins 爬虫是使用 Scrapy 框架爬取 Instagram 网站上的数据,如图片、视频、用户信息等。 在使用 Scrapy 进行 Ins 爬虫时,需要先分析 Instagram 网站上的页面结构,确定需要抓取数据类型和相应的网页元素。然后,可以编写 Scrapy 的爬虫程序,按照页面结构和元素进行数据抓取和解析,并将数据保存到数据库或文件中。 下面是一个简单的 Scrapy Ins 爬虫的代码示例: ```python import scrapy class InsSpider(scrapy.Spider): name = "ins" start_urls = [ 'https://www.instagram.com/explore/tags/puppy/', ] def parse(self, response): for post in response.css('article'): yield { 'image_url': post.css('img::attr(src)').get(), 'caption': post.css('a > div > div:nth-child(2) > span::text').get() } next_page = response.css('a.coreSpriteRightPaginationArrow::attr(href)').get() if next_page is not None: yield response.follow(next_page, self.parse) ``` 在这个例子中,我们定义了一个 InsSpider 类,继承自 scrapy.Spider 类。我们指定了爬虫的名称为 "ins",指定了抓取的起始 URL,即标签为 "puppy" 的帖子。在 parse() 方法中,我们使用 CSS 选择器选择了每个帖子的图片 URL 和标题,并通过 yield 语句将它们输出。然后,我们使用 CSS 选择器选择下一页的链接,如果存在,则继续访问下一页。 以上就是一个简单的 Scrapy Ins 爬虫的示例。当然,实际的爬虫程序要更加复杂,需要考虑反爬虫机制、数据清洗和存储等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值