爬取html页面,有时需要设置参数post方式请求,生成json,保存文件中。

1)引入模块

import requests
from bs4 import BeautifulSoup
url_ = 'http://www.c.....................'

2)设置参数

 datas = {
'yyyy':'',
'mm':'-12-31',
'cwzb':"incomestatements",
'button2':"%CC%E1%BD%BB",
}

3)post请求

r = requests.post(url,data = datas)

4)设置编码

r.encoding = r.apparent_encoding

5)BeautifulSoup解析request请求

soup = BeautifulSoup(r.text)

6)find_all筛选

soup.find_all('strong',text=re.compile(u"股票代码"))[].parent.contents[]

7)css选择select

soup.select("option[selected]")[].contents[]

beautifulsoap的API请查看  https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#beautifulsoup

Demo:文件读url,设置参数,post方式,beautifulsoap解析,生成json,保存文件中

import requests
from bs4 import BeautifulSoup
import re
import json
import time fd = open(r"E:\aa.txt","r")
mylist = []
for line in fd:
mylist.append(line)
url_pre = 'http://www.c.....................'
code = open(r"E:\a---.txt", "a")
for index in xrange(,len(mylist)): print index
url_id = mylist[index].split('?')[-]
url_id = url_id[-:-] datas = {
'yyyy':'',
'mm':'-12-31',
'cwzb':"incomestatements",'button2':"%CC%E1%BD%BB",
}
url = url_pre + str(url_id)
print url
print datas r = requests.post(url,data = datas)
r.encoding = r.apparent_encoding
print r
soup = BeautifulSoup(r.text) r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text) if len(soup.find_all("td",text=re.compile(u"营业收入"))) == :
continue jsonMap = {} jsonMap[u'股票代码'] = soup.find_all('strong',text=re.compile(u"股票代码"))[].parent.contents[]
jsonMap[u'股票简称'] = soup.find_all('strong',text=re.compile(u"股票代码"))[].parent.contents[] jsonMap[u'年度'] = soup.select("option[selected]")[].contents[]
jsonMap[u'报告期'] = soup.select("option[selected]")[].contents[] yysr = soup.find_all("td",text=re.compile(u"营业收入"))[].parent
yysrsoup = BeautifulSoup(str(yysr))
jsonMap[u'营业收入'] = yysrsoup.find_all('td')[].contents[] yylr = soup.find_all("td",text=re.compile(u"营业利润"))[].parent
yylrsoup = BeautifulSoup(str(yylr))
jsonMap[u'营业利润'] = yylrsoup.find_all('td')[].contents[] strJson = json.dumps(jsonMap, ensure_ascii=False)
print strJson
#code.write(strJson)
code.write(strJson.encode('utf-8') + '\n')
time.sleep(0.1)
code.flush()

爬虫2:html页面+beautifulsoap模块+post方式+demo的更多相关文章

  1. 爬虫1:html页面+beautifulsoap模块+get方式+demo

    前言:最近公司要求编写一个爬虫,需要完善后续金融项目的数据,由于工作隐私,就不付被爬的网址url了,下面总结下spider的工作原理. 语言:python:工具:jupyter:    概要:说到爬虫 ...

  2. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  3. 爬虫4:pdf页面+pdfminer模块+demo

    本文介绍下pdf页面的爬取,需要借助pdfminer模块 demo一般流程: 1)设置url url = 'http://www.------' + '.PDF' 2)requests模块获取url ...

  4. 【图文详解】scrapy爬虫与动态页面——爬取拉勾网职位信息(2)

    上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要 ...

  5. 爬虫基础库之requests模块

    一.requests模块简介 使用requests可以模拟浏览器请求,比起之前用到的urllib,requests模块的api更加快捷,其实ruquests的本质就是封装urllib3这个模块. re ...

  6. selenium中webdriver跳转新页面后定位置新页面的两种方式

    刚刚在写Python爬虫的时候用到了selenium , 在跳转新页面时发现无法定位新页面 , 查找不到新页面的元素 一番查询后得到了解决方法 , 便记录下来备忘 , 也与大家分享 # 页面跳转代码. ...

  7. 爬虫抓取页面数据原理(php爬虫框架有很多 )

    爬虫抓取页面数据原理(php爬虫框架有很多 ) 一.总结 1.php爬虫框架有很多,包括很多傻瓜式的软件 2.照以前写过java爬虫的例子来看,真的非常简单,就是一个获取网页数据的类或者方法(这里的话 ...

  8. [嵌入式开发板]iTOP-4412以模块的方式编译驱动

    本文转自迅为:http://www.topeetboard.com 大家好,本章节我们将向大家讲解如何在 linux 下实现以模块的方式加载内核驱动.我们以内核里面蜂鸣器的 驱动为例来讲解. 1)首先 ...

  9. 哎呀,发现自己不会用模块的方式用kprobe啊,弱爆了

    在内核外面编译模块,会报warning函数名undefined的错误,解决方法是把函数给export出来:EXPORT_SYMBOL 一直以来,用kprobe比较多的是kprobe event的用法, ...

随机推荐

  1. 调用webservice获取电话号码归属地信息

    首先什么是webservice ? 从广义上面讲,任何一个服务器所提供的"数据","内容","方法"等等都可以理解为webservice. ...

  2. Spring Security Oauth2 自定义 OAuth2 Exception

    付出就要得到回报,这种想法是错的. 前言 在使用Spring Security Oauth2登录和鉴权失败时,默认返回的异常信息如下 { "error": "unauth ...

  3. STL中关于全排列next_permutation以及prev_permutation的用法

    这两个函数都包含在algorithm库中.STL提供了两个用来计算排列组合关系的算法,分别是next_permutation和prev_permutation. 一.函数原型 首先我们来看看这两个函数 ...

  4. JWT简明介绍

    JSON Web Token一种数据格式,用来表示Token.具有可扩展.防篡改.能够在URL中安全传输的特性,已经形成标准,定义在rfc7519. JSON Web Token (JWT) is a ...

  5. Java开发者薪资最低?程序员只能干到30岁?国外真的没有996?Intellij真的比Eclipse受欢迎?

    Stack Overflow作为全球最大的程序设计领域的问答网站,每年都会出据一份开发者调查报告.近日,Stack Overflow公布了其第9次年度开发者调查报告(https://insights. ...

  6. Pytorch的基础数据类型

    引言 本篇介绍Pytorch的基础数据类型,判断方式以及常用向量 基础数据类型 torch.Tensor是一种包含单一数据类型元素的多维矩阵. 目前在1.2版本中有9种类型. 同python相比,py ...

  7. 实现一个正则表达式引擎in Python(二)

    项目地址:Regex in Python 在看一下之前正则的语法的 BNF 范式 group ::= ("(" expr ")")* expr ::= fact ...

  8. Python turtle库绘制简单图形

    一.简介 Python中的turtle库是一个直观有趣的图形绘制函数库.turtle库绘制图形有一个基本框架:一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形. 二.简单的图形列举 1.绘制4个不同 ...

  9. asp.net core mvc 之 DynamicApi

    这段时间闲赋在家,感觉手痒,故想折腾一些东西. 由于之前移植了一个c#版本的spring cloud feign客户端(https://github.com/daixinkai/feign.net), ...

  10. 使用docker安装mysql并连接

    1.查找镜像: docker search mysql 也可以去官网查看镜像tag,选择自己需要的版本,否则会下载最新版本:https://hub.docker.com/_/mysql/ 2.下载镜像 ...