爬虫2:html页面+beautifulsoap模块+post方式+demo
爬取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:html页面+beautifulsoap模块+get方式+demo
前言:最近公司要求编写一个爬虫,需要完善后续金融项目的数据,由于工作隐私,就不付被爬的网址url了,下面总结下spider的工作原理. 语言:python:工具:jupyter: 概要:说到爬虫 ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- 爬虫4:pdf页面+pdfminer模块+demo
本文介绍下pdf页面的爬取,需要借助pdfminer模块 demo一般流程: 1)设置url url = 'http://www.------' + '.PDF' 2)requests模块获取url ...
- 【图文详解】scrapy爬虫与动态页面——爬取拉勾网职位信息(2)
上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要 ...
- 爬虫基础库之requests模块
一.requests模块简介 使用requests可以模拟浏览器请求,比起之前用到的urllib,requests模块的api更加快捷,其实ruquests的本质就是封装urllib3这个模块. re ...
- selenium中webdriver跳转新页面后定位置新页面的两种方式
刚刚在写Python爬虫的时候用到了selenium , 在跳转新页面时发现无法定位新页面 , 查找不到新页面的元素 一番查询后得到了解决方法 , 便记录下来备忘 , 也与大家分享 # 页面跳转代码. ...
- 爬虫抓取页面数据原理(php爬虫框架有很多 )
爬虫抓取页面数据原理(php爬虫框架有很多 ) 一.总结 1.php爬虫框架有很多,包括很多傻瓜式的软件 2.照以前写过java爬虫的例子来看,真的非常简单,就是一个获取网页数据的类或者方法(这里的话 ...
- [嵌入式开发板]iTOP-4412以模块的方式编译驱动
本文转自迅为:http://www.topeetboard.com 大家好,本章节我们将向大家讲解如何在 linux 下实现以模块的方式加载内核驱动.我们以内核里面蜂鸣器的 驱动为例来讲解. 1)首先 ...
- 哎呀,发现自己不会用模块的方式用kprobe啊,弱爆了
在内核外面编译模块,会报warning函数名undefined的错误,解决方法是把函数给export出来:EXPORT_SYMBOL 一直以来,用kprobe比较多的是kprobe event的用法, ...
随机推荐
- Java 自定义注解 校验指定字段对应数据库内容重复
一.前言 在项目中,某些情景下我们需要验证编码是否重复,账号是否重复,身份证号是否重复等... 而像验证这类代码如下: 那么有没有办法可以解决这类似的重复代码量呢? 我们可以通过自定义注解校验的方式去 ...
- 删除mac开机启动项
1、开“系统偏好设置”窗口,选择“用户与群组”,进入用户与群组窗口.选择登录项选项卡,再解锁,最后删除开机启动的应用. 2、分别在以下6个目录中检查是否有与anydesk相关的plist文件 ~/ ...
- 百度脑图-离线版(支持Linux、Mac、Win)
免费好用的思维导图软件(在线版) 离线版:桌面版脑图是基于百度脑图的本地化版本,帮助你在没有互联网环境的情况下,依然可以使用脑图工具. 百度脑图帮助你进行思维导图,可以运用于学习.写作.沟通.演讲.管 ...
- odoo Botton标签属性详解
按钮属性 1)icon 按钮图标名,可用的按钮图标在 addons/web/static/src/img/下. 2)string 按钮的显示文字 3)type 动作执行类型.可能值是:workflow ...
- Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)
简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完 ...
- jmeter入门(环境搭建&运行&初识)
最近了解了一些性能测试的基础知识和原理决定动手实践下,比较选择了jmeter 一.什么是jmeter Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试 ...
- ZK集群如何保证数据一致性源码阅读
什么是数据一致性? 只有当服务端的ZK存在多台时,才会出现数据一致性的问题, 服务端存在多台服务器,他们被划分成了不同的角色,只有一台Leader,多台Follower和多台Observer, 他们中 ...
- gitbook 入门教程之小白都能看懂的 Gitbook 插件开发全流程
什么是插件 Gitbook 插件是扩展 GitBook 功能(电子书和网站)的最佳方式. 只要是 Gitbook 默认没有提供的功能,基于插件机制都可以自行扩展,是插件让 Gitbook 变得更加强大 ...
- Creating a Store Locator with PHP, MySQL & Google Maps(保存地图坐标 经纬度方法 google mysql)
Google Geo APIs Team August 2009 This tutorial is intended for developers who are familiar with PHP/ ...
- 使用JavaScript·求数组的最大值和最小值
前言 在数组中并没有提供arr.max()和arr.min()这样的方法.那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最大值和最小值的一些方法. 法一:其实利用 ...